LADX: reorganize options page (#4851)
* init * merge upstream/main * improve option tooltips, clean up file a bit * ladx feels like more of an ocean game * one more * more cleanup * some reorg * Apply suggestions from code review Co-authored-by: Scipio Wright <scipiowright@gmail.com> * clean up accidental newlines * rewording * dont do the ohko alias --------- Co-authored-by: Scipio Wright <scipiowright@gmail.com>
This commit is contained in:
@@ -23,11 +23,24 @@ class LADXROption:
|
|||||||
class Logic(Choice, LADXROption):
|
class Logic(Choice, LADXROption):
|
||||||
"""
|
"""
|
||||||
Affects where items are allowed to be placed.
|
Affects where items are allowed to be placed.
|
||||||
[Normal] Playable without using any tricks or glitches. Can require knowledge from a vanilla playthrough, such as how to open Color Dungeon.
|
|
||||||
[Hard] More advanced techniques may be required, but glitches are not. Examples include tricky jumps, killing enemies with only pots.
|
**Normal:** Playable without using any tricks or glitches. Can require
|
||||||
[Glitched] Advanced glitches and techniques may be required, but extremely difficult or tedious tricks are not required. Examples include Bomb Triggers, Super Jumps and Jesus Jumps.
|
knowledge from a vanilla playthrough, such as how to open Color Dungeon.
|
||||||
[Hell] Obscure knowledge and hard techniques may be required. Examples include featherless jumping with boots and/or hookshot, sequential pit buffers and unclipped superjumps. Things in here can be extremely hard to do or very time consuming."""
|
|
||||||
|
**Hard:** More advanced techniques may be required, but glitches are not.
|
||||||
|
Examples include tricky jumps, killing enemies with only pots.
|
||||||
|
|
||||||
|
**Glitched:** Advanced glitches and techniques may be required, but
|
||||||
|
extremely difficult or tedious tricks are not required. Examples include
|
||||||
|
Bomb Triggers, Super Jumps and Jesus Jumps.
|
||||||
|
|
||||||
|
**Hell:** Obscure knowledge and hard techniques may be required. Examples
|
||||||
|
include featherless jumping with boots and/or hookshot, sequential pit
|
||||||
|
buffers and unclipped superjumps. Things in here can be extremely hard to do
|
||||||
|
or very time consuming.
|
||||||
|
"""
|
||||||
display_name = "Logic"
|
display_name = "Logic"
|
||||||
|
rich_text_doc = True
|
||||||
ladxr_name = "logic"
|
ladxr_name = "logic"
|
||||||
# option_casual = 0
|
# option_casual = 0
|
||||||
option_normal = 1
|
option_normal = 1
|
||||||
@@ -40,8 +53,8 @@ class Logic(Choice, LADXROption):
|
|||||||
|
|
||||||
class TradeQuest(DefaultOffToggle, LADXROption):
|
class TradeQuest(DefaultOffToggle, LADXROption):
|
||||||
"""
|
"""
|
||||||
[On] adds the trade items to the pool (the trade locations will always be local items)
|
Trade quest items are randomized. Each NPC takes its normal trade quest
|
||||||
[Off] (default) doesn't add them
|
item and gives a randomized item in return.
|
||||||
"""
|
"""
|
||||||
display_name = "Trade Quest"
|
display_name = "Trade Quest"
|
||||||
ladxr_name = "tradequest"
|
ladxr_name = "tradequest"
|
||||||
@@ -49,40 +62,32 @@ class TradeQuest(DefaultOffToggle, LADXROption):
|
|||||||
|
|
||||||
class TextShuffle(DefaultOffToggle):
|
class TextShuffle(DefaultOffToggle):
|
||||||
"""
|
"""
|
||||||
[On] Shuffles all the text in the game
|
Shuffles all text in the game.
|
||||||
[Off] (default) doesn't shuffle them.
|
|
||||||
"""
|
"""
|
||||||
display_name = "Text Shuffle"
|
display_name = "Text Shuffle"
|
||||||
|
|
||||||
|
|
||||||
class Rooster(DefaultOnToggle, LADXROption):
|
class Rooster(DefaultOnToggle, LADXROption):
|
||||||
"""
|
"""
|
||||||
[On] Adds the rooster to the item pool.
|
Adds the rooster to the item pool. If disabled, the overworld will be
|
||||||
[Off] The rooster spot is still a check giving an item. But you will never find the rooster. In that case, any rooster spot is accessible without rooster by other means.
|
modified so that any location requiring the rooster is accessible by other
|
||||||
|
means.
|
||||||
"""
|
"""
|
||||||
display_name = "Rooster"
|
display_name = "Rooster"
|
||||||
ladxr_name = "rooster"
|
ladxr_name = "rooster"
|
||||||
|
|
||||||
|
|
||||||
class Boomerang(Choice):
|
|
||||||
"""
|
|
||||||
[Normal] requires Magnifying Lens to get the boomerang.
|
|
||||||
[Gift] The boomerang salesman will give you a random item, and the boomerang is shuffled.
|
|
||||||
"""
|
|
||||||
display_name = "Boomerang"
|
|
||||||
|
|
||||||
normal = 0
|
|
||||||
gift = 1
|
|
||||||
default = gift
|
|
||||||
|
|
||||||
|
|
||||||
class EntranceShuffle(Choice, LADXROption):
|
class EntranceShuffle(Choice, LADXROption):
|
||||||
"""
|
"""
|
||||||
[WARNING] Experimental, may fail to fill
|
Randomizes where overworld entrances lead.
|
||||||
Randomizes where overworld entrances lead to.
|
|
||||||
[Simple] Single-entrance caves/houses that have items are shuffled amongst each other.
|
**Simple:** Single-entrance caves/houses that have items are shuffled
|
||||||
If random start location and/or dungeon shuffle is enabled, then these will be shuffled with all the non-connector entrance pool.
|
amongst each other.
|
||||||
Note, some entrances can lead into water, use the warp-to-home from the save&quit menu to escape this."""
|
|
||||||
|
If *Dungeon Shuffle* is enabled, then dungeons will be shuffled with all the
|
||||||
|
non-connector entrances in the pool. Note, some entrances can lead into water, use
|
||||||
|
the warp-to-home from the save&quit menu to escape this.
|
||||||
|
"""
|
||||||
|
|
||||||
# [Advanced] Simple, but two-way connector caves are shuffled in their own pool as well.
|
# [Advanced] Simple, but two-way connector caves are shuffled in their own pool as well.
|
||||||
# [Expert] Advanced, but caves/houses without items are also shuffled into the Simple entrance pool.
|
# [Expert] Advanced, but caves/houses without items are also shuffled into the Simple entrance pool.
|
||||||
@@ -94,22 +99,22 @@ class EntranceShuffle(Choice, LADXROption):
|
|||||||
# option_expert = 3
|
# option_expert = 3
|
||||||
# option_insanity = 4
|
# option_insanity = 4
|
||||||
default = option_none
|
default = option_none
|
||||||
display_name = "Experimental Entrance Shuffle"
|
display_name = "Entrance Shuffle"
|
||||||
ladxr_name = "entranceshuffle"
|
ladxr_name = "entranceshuffle"
|
||||||
|
rich_text_doc = True
|
||||||
|
|
||||||
|
|
||||||
class DungeonShuffle(DefaultOffToggle, LADXROption):
|
class DungeonShuffle(DefaultOffToggle, LADXROption):
|
||||||
"""
|
"""
|
||||||
[WARNING] Experimental, may fail to fill
|
Randomizes dungeon entrances with each other.
|
||||||
Randomizes dungeon entrances within eachother
|
|
||||||
"""
|
"""
|
||||||
display_name = "Experimental Dungeon Shuffle"
|
display_name = "Dungeon Shuffle"
|
||||||
ladxr_name = "dungeonshuffle"
|
ladxr_name = "dungeonshuffle"
|
||||||
|
|
||||||
|
|
||||||
class APTitleScreen(DefaultOnToggle):
|
class APTitleScreen(DefaultOnToggle):
|
||||||
"""
|
"""
|
||||||
Enables AP specific title screen and disables the intro cutscene
|
Enables AP specific title screen and disables the intro cutscene.
|
||||||
"""
|
"""
|
||||||
display_name = "AP Title Screen"
|
display_name = "AP Title Screen"
|
||||||
|
|
||||||
@@ -124,6 +129,7 @@ class BossShuffle(Choice):
|
|||||||
|
|
||||||
class DungeonItemShuffle(Choice):
|
class DungeonItemShuffle(Choice):
|
||||||
display_name = "Dungeon Item Shuffle"
|
display_name = "Dungeon Item Shuffle"
|
||||||
|
rich_text_doc = True
|
||||||
option_original_dungeon = 0
|
option_original_dungeon = 0
|
||||||
option_own_dungeons = 1
|
option_own_dungeons = 1
|
||||||
option_own_world = 2
|
option_own_world = 2
|
||||||
@@ -138,12 +144,15 @@ class DungeonItemShuffle(Choice):
|
|||||||
|
|
||||||
class ShuffleNightmareKeys(DungeonItemShuffle):
|
class ShuffleNightmareKeys(DungeonItemShuffle):
|
||||||
"""
|
"""
|
||||||
Shuffle Nightmare Keys
|
**Original Dungeon:** The item will be within its original dungeon.
|
||||||
[Original Dungeon] The item will be within its original dungeon
|
|
||||||
[Own Dungeons] The item will be within a dungeon in your world
|
**Own Dungeons:** The item will be within a dungeon in your world.
|
||||||
[Own World] The item will be somewhere in your world
|
|
||||||
[Any World] The item could be anywhere
|
**Own World:** The item will be somewhere in your world.
|
||||||
[Different World] The item will be somewhere in another world
|
|
||||||
|
**Any World:** The item could be anywhere.
|
||||||
|
|
||||||
|
**Different World:** The item will be somewhere in another world.
|
||||||
"""
|
"""
|
||||||
display_name = "Shuffle Nightmare Keys"
|
display_name = "Shuffle Nightmare Keys"
|
||||||
ladxr_item = "NIGHTMARE_KEY"
|
ladxr_item = "NIGHTMARE_KEY"
|
||||||
@@ -151,12 +160,15 @@ class ShuffleNightmareKeys(DungeonItemShuffle):
|
|||||||
|
|
||||||
class ShuffleSmallKeys(DungeonItemShuffle):
|
class ShuffleSmallKeys(DungeonItemShuffle):
|
||||||
"""
|
"""
|
||||||
Shuffle Small Keys
|
**Original Dungeon:** The item will be within its original dungeon.
|
||||||
[Original Dungeon] The item will be within its original dungeon
|
|
||||||
[Own Dungeons] The item will be within a dungeon in your world
|
**Own Dungeons:** The item will be within a dungeon in your world.
|
||||||
[Own World] The item will be somewhere in your world
|
|
||||||
[Any World] The item could be anywhere
|
**Own World:** The item will be somewhere in your world.
|
||||||
[Different World] The item will be somewhere in another world
|
|
||||||
|
**Any World:** The item could be anywhere.
|
||||||
|
|
||||||
|
**Different World:** The item will be somewhere in another world.
|
||||||
"""
|
"""
|
||||||
display_name = "Shuffle Small Keys"
|
display_name = "Shuffle Small Keys"
|
||||||
ladxr_item = "KEY"
|
ladxr_item = "KEY"
|
||||||
@@ -164,12 +176,15 @@ class ShuffleSmallKeys(DungeonItemShuffle):
|
|||||||
|
|
||||||
class ShuffleMaps(DungeonItemShuffle):
|
class ShuffleMaps(DungeonItemShuffle):
|
||||||
"""
|
"""
|
||||||
Shuffle Dungeon Maps
|
**Original Dungeon:** The item will be within its original dungeon.
|
||||||
[Original Dungeon] The item will be within its original dungeon
|
|
||||||
[Own Dungeons] The item will be within a dungeon in your world
|
**Own Dungeons:** The item will be within a dungeon in your world.
|
||||||
[Own World] The item will be somewhere in your world
|
|
||||||
[Any World] The item could be anywhere
|
**Own World:** The item will be somewhere in your world.
|
||||||
[Different World] The item will be somewhere in another world
|
|
||||||
|
**Any World:** The item could be anywhere.
|
||||||
|
|
||||||
|
**Different World:** The item will be somewhere in another world.
|
||||||
"""
|
"""
|
||||||
display_name = "Shuffle Maps"
|
display_name = "Shuffle Maps"
|
||||||
ladxr_item = "MAP"
|
ladxr_item = "MAP"
|
||||||
@@ -177,12 +192,15 @@ class ShuffleMaps(DungeonItemShuffle):
|
|||||||
|
|
||||||
class ShuffleCompasses(DungeonItemShuffle):
|
class ShuffleCompasses(DungeonItemShuffle):
|
||||||
"""
|
"""
|
||||||
Shuffle Dungeon Compasses
|
**Original Dungeon:** The item will be within its original dungeon.
|
||||||
[Original Dungeon] The item will be within its original dungeon
|
|
||||||
[Own Dungeons] The item will be within a dungeon in your world
|
**Own Dungeons:** The item will be within a dungeon in your world.
|
||||||
[Own World] The item will be somewhere in your world
|
|
||||||
[Any World] The item could be anywhere
|
**Own World:** The item will be somewhere in your world.
|
||||||
[Different World] The item will be somewhere in another world
|
|
||||||
|
**Any World:** The item could be anywhere.
|
||||||
|
|
||||||
|
**Different World:** The item will be somewhere in another world.
|
||||||
"""
|
"""
|
||||||
display_name = "Shuffle Compasses"
|
display_name = "Shuffle Compasses"
|
||||||
ladxr_item = "COMPASS"
|
ladxr_item = "COMPASS"
|
||||||
@@ -190,12 +208,15 @@ class ShuffleCompasses(DungeonItemShuffle):
|
|||||||
|
|
||||||
class ShuffleStoneBeaks(DungeonItemShuffle):
|
class ShuffleStoneBeaks(DungeonItemShuffle):
|
||||||
"""
|
"""
|
||||||
Shuffle Owl Beaks
|
**Original Dungeon:** The item will be within its original dungeon.
|
||||||
[Original Dungeon] The item will be within its original dungeon
|
|
||||||
[Own Dungeons] The item will be within a dungeon in your world
|
**Own Dungeons:** The item will be within a dungeon in your world.
|
||||||
[Own World] The item will be somewhere in your world
|
|
||||||
[Any World] The item could be anywhere
|
**Own World:** The item will be somewhere in your world.
|
||||||
[Different World] The item will be somewhere in another world
|
|
||||||
|
**Any World:** The item could be anywhere.
|
||||||
|
|
||||||
|
**Different World:** The item will be somewhere in another world.
|
||||||
"""
|
"""
|
||||||
display_name = "Shuffle Stone Beaks"
|
display_name = "Shuffle Stone Beaks"
|
||||||
ladxr_item = "STONE_BEAK"
|
ladxr_item = "STONE_BEAK"
|
||||||
@@ -203,13 +224,17 @@ class ShuffleStoneBeaks(DungeonItemShuffle):
|
|||||||
|
|
||||||
class ShuffleInstruments(DungeonItemShuffle):
|
class ShuffleInstruments(DungeonItemShuffle):
|
||||||
"""
|
"""
|
||||||
Shuffle Instruments
|
**Original Dungeon:** The item will be within its original dungeon.
|
||||||
[Original Dungeon] The item will be within its original dungeon
|
|
||||||
[Own Dungeons] The item will be within a dungeon in your world
|
**Own Dungeons:** The item will be within a dungeon in your world.
|
||||||
[Own World] The item will be somewhere in your world
|
|
||||||
[Any World] The item could be anywhere
|
**Own World:** The item will be somewhere in your world.
|
||||||
[Different World] The item will be somewhere in another world
|
|
||||||
[Vanilla] The item will be in its vanilla location in your world
|
**Any World:** The item could be anywhere.
|
||||||
|
|
||||||
|
**Different World:** The item will be somewhere in another world.
|
||||||
|
|
||||||
|
**Vanilla:** The item will be in its vanilla location in your world.
|
||||||
"""
|
"""
|
||||||
display_name = "Shuffle Instruments"
|
display_name = "Shuffle Instruments"
|
||||||
ladxr_item = "INSTRUMENT"
|
ladxr_item = "INSTRUMENT"
|
||||||
@@ -220,12 +245,18 @@ class ShuffleInstruments(DungeonItemShuffle):
|
|||||||
|
|
||||||
class Goal(Choice, LADXROption):
|
class Goal(Choice, LADXROption):
|
||||||
"""
|
"""
|
||||||
The Goal of the game
|
The Goal of the game.
|
||||||
[Instruments] The Wind Fish's Egg will only open if you have the required number of Instruments of the Sirens, and play the Ballad of the Wind Fish.
|
|
||||||
[Seashells] The Egg will open when you bring 20 seashells. The Ballad and Ocarina are not needed.
|
**Instruments:** The Wind Fish's Egg will only open if you have the required
|
||||||
[Open] The Egg will start pre-opened.
|
number of Instruments of the Sirens, and play the Ballad of the Wind Fish.
|
||||||
|
|
||||||
|
**Seashells:** The Egg will open when you bring 20 seashells. The Ballad and
|
||||||
|
Ocarina are not needed.
|
||||||
|
|
||||||
|
**Open:** The Egg will start pre-opened.
|
||||||
"""
|
"""
|
||||||
display_name = "Goal"
|
display_name = "Goal"
|
||||||
|
rich_text_doc = True
|
||||||
ladxr_name = "goal"
|
ladxr_name = "goal"
|
||||||
option_instruments = 1
|
option_instruments = 1
|
||||||
option_seashells = 2
|
option_seashells = 2
|
||||||
@@ -242,7 +273,7 @@ class Goal(Choice, LADXROption):
|
|||||||
|
|
||||||
class InstrumentCount(Range, LADXROption):
|
class InstrumentCount(Range, LADXROption):
|
||||||
"""
|
"""
|
||||||
Sets the number of instruments required to open the Egg
|
Sets the number of instruments required to open the Egg.
|
||||||
"""
|
"""
|
||||||
display_name = "Instrument Count"
|
display_name = "Instrument Count"
|
||||||
ladxr_name = None
|
ladxr_name = None
|
||||||
@@ -253,7 +284,8 @@ class InstrumentCount(Range, LADXROption):
|
|||||||
|
|
||||||
class NagMessages(DefaultOffToggle, LADXROption):
|
class NagMessages(DefaultOffToggle, LADXROption):
|
||||||
"""
|
"""
|
||||||
Controls if nag messages are shown when rocks and crystals are touched. Useful for glitches, annoying for everyone else.
|
Controls if nag messages are shown when rocks and crystals are touched.
|
||||||
|
Useful for glitches, annoying for everything else.
|
||||||
"""
|
"""
|
||||||
display_name = "Nag Messages"
|
display_name = "Nag Messages"
|
||||||
ladxr_name = "nagmessages"
|
ladxr_name = "nagmessages"
|
||||||
@@ -262,31 +294,30 @@ class NagMessages(DefaultOffToggle, LADXROption):
|
|||||||
class MusicChangeCondition(Choice):
|
class MusicChangeCondition(Choice):
|
||||||
"""
|
"""
|
||||||
Controls how the music changes.
|
Controls how the music changes.
|
||||||
[Sword] When you pick up a sword, the music changes
|
|
||||||
[Always] You always have the post-sword music
|
**Sword:** When you pick up a sword, the music changes.
|
||||||
|
|
||||||
|
**Always:** You always have the post-sword music.
|
||||||
"""
|
"""
|
||||||
display_name = "Music Change Condition"
|
display_name = "Music Change Condition"
|
||||||
|
rich_text_doc = True
|
||||||
option_sword = 0
|
option_sword = 0
|
||||||
option_always = 1
|
option_always = 1
|
||||||
default = option_always
|
default = option_always
|
||||||
|
|
||||||
|
|
||||||
# Setting('hpmode', 'Gameplay', 'm', 'Health mode', options=[('default', '', 'Normal'), ('inverted', 'i', 'Inverted'), ('1', '1', 'Start with 1 heart'), ('low', 'l', 'Low max')], default='default',
|
|
||||||
# description="""
|
|
||||||
# [Normal} health works as you would expect.
|
|
||||||
# [Inverted] you start with 9 heart containers, but killing a boss will take a heartcontainer instead of giving one.
|
|
||||||
# [Start with 1] normal game, you just start with 1 heart instead of 3.
|
|
||||||
# [Low max] replace heart containers with heart pieces."""),
|
|
||||||
|
|
||||||
|
|
||||||
class HardMode(Choice, LADXROption):
|
class HardMode(Choice, LADXROption):
|
||||||
"""
|
"""
|
||||||
[Oracle] Less iframes and health from drops. Bombs damage yourself. Water damages you without flippers. No piece of power or acorn.
|
**Oracle:** Less iframes and health from drops. Bombs damage yourself. Water
|
||||||
[Hero] Switch version hero mode, double damage, no heart/fairy drops.
|
damages you without flippers. No pieces of power or acorns.
|
||||||
[One hit KO] You die on a single hit, always.
|
|
||||||
|
**Hero:** Switch version hero mode, double damage, no heart/fairy drops.
|
||||||
|
|
||||||
|
**OHKO:** You die on a single hit, always.
|
||||||
"""
|
"""
|
||||||
display_name = "Hard Mode"
|
display_name = "Hard Mode"
|
||||||
ladxr_name = "hardmode"
|
ladxr_name = "hardmode"
|
||||||
|
rich_text_doc = True
|
||||||
option_none = 0
|
option_none = 0
|
||||||
option_oracle = 1
|
option_oracle = 1
|
||||||
option_hero = 2
|
option_hero = 2
|
||||||
@@ -294,44 +325,26 @@ class HardMode(Choice, LADXROption):
|
|||||||
default = option_none
|
default = option_none
|
||||||
|
|
||||||
|
|
||||||
# Setting('steal', 'Gameplay', 't', 'Stealing from the shop',
|
|
||||||
# options=[('always', 'a', 'Always'), ('never', 'n', 'Never'), ('default', '', 'Normal')], default='default',
|
|
||||||
# description="""Effects when you can steal from the shop. Stealing is bad and never in logic.
|
|
||||||
# [Normal] requires the sword before you can steal.
|
|
||||||
# [Always] you can always steal from the shop
|
|
||||||
# [Never] you can never steal from the shop."""),
|
|
||||||
class Bowwow(Choice):
|
|
||||||
"""Allows BowWow to be taken into any area. Certain enemies and bosses are given a new weakness to BowWow.
|
|
||||||
[Normal] BowWow is in the item pool, but can be logically expected as a damage source.
|
|
||||||
[Swordless] The progressive swords are removed from the item pool.
|
|
||||||
"""
|
|
||||||
display_name = "BowWow"
|
|
||||||
normal = 0
|
|
||||||
swordless = 1
|
|
||||||
default = normal
|
|
||||||
|
|
||||||
|
|
||||||
class Overworld(Choice, LADXROption):
|
class Overworld(Choice, LADXROption):
|
||||||
"""
|
"""
|
||||||
[Open Mabe] Replaces rock on the east side of Mabe Village with bushes, allowing access to Ukuku Prairie without Power Bracelet.
|
**Open Mabe:** Replaces rock on the east side of Mabe Village with bushes,
|
||||||
|
allowing access to Ukuku Prairie without Power Bracelet.
|
||||||
"""
|
"""
|
||||||
display_name = "Overworld"
|
display_name = "Overworld"
|
||||||
ladxr_name = "overworld"
|
ladxr_name = "overworld"
|
||||||
|
rich_text_doc = True
|
||||||
option_normal = 0
|
option_normal = 0
|
||||||
option_open_mabe = 1
|
option_open_mabe = 1
|
||||||
default = option_normal
|
default = option_normal
|
||||||
|
|
||||||
|
|
||||||
# Setting('superweapons', 'Special', 'q', 'Enable super weapons', default=False,
|
|
||||||
# description='All items will be more powerful, faster, harder, bigger stronger. You name it.'),
|
|
||||||
|
|
||||||
|
|
||||||
class Quickswap(Choice, LADXROption):
|
class Quickswap(Choice, LADXROption):
|
||||||
"""
|
"""
|
||||||
Adds that the SELECT button swaps with either A or B. The item is swapped with the top inventory slot. The map is not available when quickswap is enabled.
|
Instead of opening the map, the *SELECT* button swaps the top item of your inventory on to your *A* or *B* button.
|
||||||
"""
|
"""
|
||||||
display_name = "Quickswap"
|
display_name = "Quickswap"
|
||||||
ladxr_name = "quickswap"
|
ladxr_name = "quickswap"
|
||||||
|
rich_text_doc = True
|
||||||
option_none = 0
|
option_none = 0
|
||||||
option_a = 1
|
option_a = 1
|
||||||
option_b = 2
|
option_b = 2
|
||||||
@@ -340,10 +353,11 @@ class Quickswap(Choice, LADXROption):
|
|||||||
|
|
||||||
class TextMode(Choice, LADXROption):
|
class TextMode(Choice, LADXROption):
|
||||||
"""
|
"""
|
||||||
[Fast] Makes text appear twice as fast
|
**Fast:** Makes text appear twice as fast.
|
||||||
"""
|
"""
|
||||||
display_name = "Text Mode"
|
display_name = "Text Mode"
|
||||||
ladxr_name = "textmode"
|
ladxr_name = "textmode"
|
||||||
|
rich_text_doc = True
|
||||||
option_normal = 0
|
option_normal = 0
|
||||||
option_fast = 1
|
option_fast = 1
|
||||||
default = option_fast
|
default = option_fast
|
||||||
@@ -363,7 +377,8 @@ class LowHpBeep(Choice, LADXROption):
|
|||||||
|
|
||||||
class NoFlash(DefaultOnToggle, LADXROption):
|
class NoFlash(DefaultOnToggle, LADXROption):
|
||||||
"""
|
"""
|
||||||
Remove the flashing light effects from Mamu, shopkeeper and MadBatter. Useful for capture cards and people that are sensitive to these things.
|
Remove the flashing light effects from Mamu, shopkeeper and MadBatter.
|
||||||
|
Useful for capture cards and people that are sensitive to these things.
|
||||||
"""
|
"""
|
||||||
display_name = "No Flash"
|
display_name = "No Flash"
|
||||||
ladxr_name = "noflash"
|
ladxr_name = "noflash"
|
||||||
@@ -371,23 +386,34 @@ class NoFlash(DefaultOnToggle, LADXROption):
|
|||||||
|
|
||||||
class BootsControls(Choice):
|
class BootsControls(Choice):
|
||||||
"""
|
"""
|
||||||
Adds additional button to activate Pegasus Boots (does nothing if you haven't picked up your boots!)
|
Adds an additional button to activate Pegasus Boots (does nothing if you
|
||||||
[Vanilla] Nothing changes, you have to equip the boots to use them
|
haven't picked up your boots!)
|
||||||
[Bracelet] Holding down the button for the bracelet also activates boots (somewhat like Link to the Past)
|
|
||||||
[Press A] Holding down A activates boots
|
**Vanilla:** Nothing changes, you have to equip the boots to use them.
|
||||||
[Press B] Holding down B activates boots
|
|
||||||
|
**Bracelet:** Holding down the button for the bracelet also activates boots
|
||||||
|
(somewhat like Link to the Past).
|
||||||
|
|
||||||
|
**Press A:** Holding down A activates boots.
|
||||||
|
|
||||||
|
**Press B:** Holding down B activates boots.
|
||||||
"""
|
"""
|
||||||
display_name = "Boots Controls"
|
display_name = "Boots Controls"
|
||||||
|
rich_text_doc = True
|
||||||
option_vanilla = 0
|
option_vanilla = 0
|
||||||
option_bracelet = 1
|
option_bracelet = 1
|
||||||
option_press_a = 2
|
option_press_a = 2
|
||||||
|
alias_a = 2
|
||||||
option_press_b = 3
|
option_press_b = 3
|
||||||
|
alias_b = 3
|
||||||
|
|
||||||
|
|
||||||
class LinkPalette(Choice, LADXROption):
|
class LinkPalette(Choice, LADXROption):
|
||||||
"""
|
"""
|
||||||
Sets link's palette
|
Sets Link's palette.
|
||||||
A-D are color palettes usually used during the damage animation and can change based on where you are.
|
|
||||||
|
A-D are color palettes usually used during the damage animation and can
|
||||||
|
change based on where you are.
|
||||||
"""
|
"""
|
||||||
display_name = "Link's Palette"
|
display_name = "Link's Palette"
|
||||||
ladxr_name = "linkspalette"
|
ladxr_name = "linkspalette"
|
||||||
@@ -408,14 +434,21 @@ class LinkPalette(Choice, LADXROption):
|
|||||||
|
|
||||||
class TrendyGame(Choice):
|
class TrendyGame(Choice):
|
||||||
"""
|
"""
|
||||||
[Easy] All of the items hold still for you
|
**Easy:** All of the items hold still for you.
|
||||||
[Normal] The vanilla behavior
|
|
||||||
[Hard] The trade item also moves
|
**Normal:** The vanilla behavior.
|
||||||
[Harder] The items move faster
|
|
||||||
[Hardest] The items move diagonally
|
**Hard:** The trade item also moves.
|
||||||
[Impossible] The items move impossibly fast, may scroll on and off the screen
|
|
||||||
|
**Harder:** The items move faster.
|
||||||
|
|
||||||
|
**Hardest:** The items move diagonally.
|
||||||
|
|
||||||
|
**Impossible:** The items move impossibly fast, may scroll on and off the
|
||||||
|
screen.
|
||||||
"""
|
"""
|
||||||
display_name = "Trendy Game"
|
display_name = "Trendy Game"
|
||||||
|
rich_text_doc = True
|
||||||
option_easy = 0
|
option_easy = 0
|
||||||
option_normal = 1
|
option_normal = 1
|
||||||
option_hard = 2
|
option_hard = 2
|
||||||
@@ -435,15 +468,24 @@ class GfxMod(DefaultOffToggle):
|
|||||||
class Palette(Choice):
|
class Palette(Choice):
|
||||||
"""
|
"""
|
||||||
Sets the palette for the game.
|
Sets the palette for the game.
|
||||||
Note: A few places aren't patched, such as the menu and a few color dungeon tiles.
|
|
||||||
[Normal] The vanilla palette
|
Note: A few places aren't patched, such as the menu and a few color dungeon
|
||||||
[1-Bit] One bit of color per channel
|
tiles.
|
||||||
[2-Bit] Two bits of color per channel
|
|
||||||
[Greyscale] Shades of grey
|
**Normal:** The vanilla palette.
|
||||||
[Pink] Aesthetic
|
|
||||||
[Inverted] Inverted
|
**1-Bit:** One bit of color per channel.
|
||||||
|
|
||||||
|
**2-Bit:** Two bits of color per channel.
|
||||||
|
|
||||||
|
**Greyscale:** Shades of grey.
|
||||||
|
|
||||||
|
**Pink:** Aesthetic.
|
||||||
|
|
||||||
|
**Inverted:** Inverted.
|
||||||
"""
|
"""
|
||||||
display_name = "Palette"
|
display_name = "Palette"
|
||||||
|
rich_text_doc = True
|
||||||
option_normal = 0
|
option_normal = 0
|
||||||
option_1bit = 1
|
option_1bit = 1
|
||||||
option_2bit = 2
|
option_2bit = 2
|
||||||
@@ -454,12 +496,15 @@ class Palette(Choice):
|
|||||||
|
|
||||||
class Music(Choice, LADXROption):
|
class Music(Choice, LADXROption):
|
||||||
"""
|
"""
|
||||||
[Vanilla] Regular Music
|
**Vanilla:** Regular Music
|
||||||
[Shuffled] Shuffled Music
|
|
||||||
[Off] No music
|
**Shuffled:** Shuffled Music
|
||||||
|
|
||||||
|
**Off:** No music
|
||||||
"""
|
"""
|
||||||
display_name = "Music"
|
display_name = "Music"
|
||||||
ladxr_name = "music"
|
ladxr_name = "music"
|
||||||
|
rich_text_doc = True
|
||||||
option_vanilla = 0
|
option_vanilla = 0
|
||||||
option_shuffled = 1
|
option_shuffled = 1
|
||||||
option_off = 2
|
option_off = 2
|
||||||
@@ -475,10 +520,14 @@ class Music(Choice, LADXROption):
|
|||||||
|
|
||||||
class Warps(Choice):
|
class Warps(Choice):
|
||||||
"""
|
"""
|
||||||
[Improved] Adds remake style warp screen to the game. Choose your warp destination on the map after jumping in a portal and press B to select.
|
**Improved:** Adds remake style warp screen to the game. Choose your warp
|
||||||
[Improved Additional] Improved warps, and adds a warp point at Crazy Tracy's house (the Mambo teleport spot) and Eagle's Tower.
|
destination on the map after jumping in a portal and press *B* to select.
|
||||||
|
|
||||||
|
**Improved Additional:** Improved warps, and adds a warp point at Crazy
|
||||||
|
Tracy's house (the Mambo teleport spot) and Eagle's Tower.
|
||||||
"""
|
"""
|
||||||
display_name = "Warps"
|
display_name = "Warps"
|
||||||
|
rich_text_doc = True
|
||||||
option_vanilla = 0
|
option_vanilla = 0
|
||||||
option_improved = 1
|
option_improved = 1
|
||||||
option_improved_additional = 2
|
option_improved_additional = 2
|
||||||
@@ -487,19 +536,24 @@ class Warps(Choice):
|
|||||||
|
|
||||||
class InGameHints(DefaultOnToggle):
|
class InGameHints(DefaultOnToggle):
|
||||||
"""
|
"""
|
||||||
When enabled, owl statues and library books may indicate the location of your items in the multiworld.
|
When enabled, owl statues and library books may indicate the location of
|
||||||
|
your items in the multiworld.
|
||||||
"""
|
"""
|
||||||
display_name = "In-game Hints"
|
display_name = "In-game Hints"
|
||||||
|
|
||||||
|
|
||||||
class TarinsGift(Choice):
|
class TarinsGift(Choice):
|
||||||
"""
|
"""
|
||||||
[Local Progression] Forces Tarin's gift to be an item that immediately opens up local checks.
|
**Local Progression:** Forces Tarin's gift to be an item that immediately
|
||||||
Has little effect in single player games, and isn't always necessary with randomized entrances.
|
opens up local checks. Has little effect in single player games, and isn't
|
||||||
[Bush Breaker] Forces Tarin's gift to be an item that can destroy bushes.
|
always necessary with randomized entrances.
|
||||||
[Any Item] Tarin's gift can be any item for any world
|
|
||||||
|
**Bush Breaker:** Forces Tarin's gift to be an item that can destroy bushes.
|
||||||
|
|
||||||
|
**Any Item:** Tarin's gift can be any item for any world
|
||||||
"""
|
"""
|
||||||
display_name = "Tarin's Gift"
|
display_name = "Tarin's Gift"
|
||||||
|
rich_text_doc = True
|
||||||
option_local_progression = 0
|
option_local_progression = 0
|
||||||
option_bush_breaker = 1
|
option_bush_breaker = 1
|
||||||
option_any_item = 2
|
option_any_item = 2
|
||||||
@@ -508,67 +562,69 @@ class TarinsGift(Choice):
|
|||||||
|
|
||||||
class StabilizeItemPool(DefaultOffToggle):
|
class StabilizeItemPool(DefaultOffToggle):
|
||||||
"""
|
"""
|
||||||
By default, rupees in the item pool may be randomly swapped with bombs, arrows, powders, or capacity upgrades. This option disables that swapping, which is useful for plando.
|
By default, some rupees in the item pool are randomly swapped with bombs,
|
||||||
|
arrows, powders, or capacity upgrades. This set of items is also used as
|
||||||
|
filler. This option disables that swapping and makes *Nothing* the filler
|
||||||
|
item.
|
||||||
"""
|
"""
|
||||||
display_name = "Stabilize Item Pool"
|
display_name = "Stabilize Item Pool"
|
||||||
|
rich_text_doc = True
|
||||||
|
|
||||||
|
|
||||||
class ForeignItemIcons(Choice):
|
class ForeignItemIcons(Choice):
|
||||||
"""
|
"""
|
||||||
Choose how to display foreign items.
|
Choose how to display foreign items.
|
||||||
[Guess By Name] Foreign items can look like any Link's Awakening item.
|
|
||||||
[Indicate Progression] Foreign items are either a Piece of Power (progression) or Guardian Acorn (non-progression).
|
**Guess By Name:** Foreign items can look like any Link's Awakening item.
|
||||||
|
|
||||||
|
**Indicate Progression:** Foreign items are either a Piece of Power
|
||||||
|
(progression) or Guardian Acorn (non-progression).
|
||||||
"""
|
"""
|
||||||
display_name = "Foreign Item Icons"
|
display_name = "Foreign Item Icons"
|
||||||
|
rich_text_doc = True
|
||||||
option_guess_by_name = 0
|
option_guess_by_name = 0
|
||||||
option_indicate_progression = 1
|
option_indicate_progression = 1
|
||||||
default = option_guess_by_name
|
default = option_guess_by_name
|
||||||
|
|
||||||
|
|
||||||
ladx_option_groups = [
|
ladx_option_groups = [
|
||||||
OptionGroup("Goal Options", [
|
OptionGroup("Gameplay Adjustments", [
|
||||||
Goal,
|
InGameHints,
|
||||||
InstrumentCount,
|
TarinsGift,
|
||||||
|
HardMode,
|
||||||
|
TrendyGame,
|
||||||
]),
|
]),
|
||||||
OptionGroup("Shuffles", [
|
OptionGroup("World Layout", [
|
||||||
|
Overworld,
|
||||||
|
Warps,
|
||||||
|
DungeonShuffle,
|
||||||
|
EntranceShuffle,
|
||||||
|
]),
|
||||||
|
OptionGroup("Item Pool", [
|
||||||
ShuffleInstruments,
|
ShuffleInstruments,
|
||||||
ShuffleNightmareKeys,
|
ShuffleNightmareKeys,
|
||||||
ShuffleSmallKeys,
|
ShuffleSmallKeys,
|
||||||
ShuffleMaps,
|
ShuffleMaps,
|
||||||
ShuffleCompasses,
|
ShuffleCompasses,
|
||||||
ShuffleStoneBeaks
|
ShuffleStoneBeaks,
|
||||||
]),
|
|
||||||
OptionGroup("Warp Points", [
|
|
||||||
Warps,
|
|
||||||
]),
|
|
||||||
OptionGroup("Miscellaneous", [
|
|
||||||
TradeQuest,
|
TradeQuest,
|
||||||
Rooster,
|
Rooster,
|
||||||
TarinsGift,
|
|
||||||
Overworld,
|
|
||||||
TrendyGame,
|
|
||||||
InGameHints,
|
|
||||||
NagMessages,
|
|
||||||
StabilizeItemPool,
|
StabilizeItemPool,
|
||||||
|
]),
|
||||||
|
OptionGroup("Quality of Life & Aesthetic", [
|
||||||
|
NagMessages,
|
||||||
Quickswap,
|
Quickswap,
|
||||||
HardMode,
|
BootsControls,
|
||||||
BootsControls
|
ForeignItemIcons,
|
||||||
]),
|
GfxMod,
|
||||||
OptionGroup("Experimental", [
|
|
||||||
DungeonShuffle,
|
|
||||||
EntranceShuffle
|
|
||||||
]),
|
|
||||||
OptionGroup("Visuals & Sound", [
|
|
||||||
LinkPalette,
|
LinkPalette,
|
||||||
Palette,
|
Palette,
|
||||||
TextShuffle,
|
|
||||||
ForeignItemIcons,
|
|
||||||
APTitleScreen,
|
APTitleScreen,
|
||||||
GfxMod,
|
TextShuffle,
|
||||||
|
TextMode,
|
||||||
Music,
|
Music,
|
||||||
MusicChangeCondition,
|
MusicChangeCondition,
|
||||||
LowHpBeep,
|
LowHpBeep,
|
||||||
TextMode,
|
|
||||||
NoFlash,
|
NoFlash,
|
||||||
])
|
])
|
||||||
]
|
]
|
||||||
@@ -576,24 +632,12 @@ ladx_option_groups = [
|
|||||||
@dataclass
|
@dataclass
|
||||||
class LinksAwakeningOptions(PerGameCommonOptions):
|
class LinksAwakeningOptions(PerGameCommonOptions):
|
||||||
logic: Logic
|
logic: Logic
|
||||||
# 'heartpiece': DefaultOnToggle, # description='Includes heart pieces in the item pool'),
|
tradequest: TradeQuest
|
||||||
# 'seashells': DefaultOnToggle, # description='Randomizes the secret sea shells hiding in the ground/trees. (chest are always randomized)'),
|
rooster: Rooster
|
||||||
# 'heartcontainers': DefaultOnToggle, # description='Includes boss heart container drops in the item pool'),
|
experimental_dungeon_shuffle: DungeonShuffle
|
||||||
# 'instruments': DefaultOffToggle, # description='Instruments are placed on random locations, dungeon goal will just contain a random item.'),
|
|
||||||
tradequest: TradeQuest # description='Trade quest items are randomized, each NPC takes its normal trade quest item, but gives a random item'),
|
|
||||||
# 'witch': DefaultOnToggle, # description='Adds both the toadstool and the reward for giving the toadstool to the witch to the item pool'),
|
|
||||||
rooster: Rooster # description='Adds the rooster to the item pool. Without this option, the rooster spot is still a check giving an item. But you will never find the rooster. Any rooster spot is accessible without rooster by other means.'),
|
|
||||||
# 'boomerang': Boomerang,
|
|
||||||
# 'randomstartlocation': DefaultOffToggle, # 'Randomize where your starting house is located'),
|
|
||||||
experimental_dungeon_shuffle: DungeonShuffle # 'Randomizes the dungeon that each dungeon entrance leads to'),
|
|
||||||
experimental_entrance_shuffle: EntranceShuffle
|
experimental_entrance_shuffle: EntranceShuffle
|
||||||
# 'bossshuffle': BossShuffle,
|
|
||||||
# 'minibossshuffle': BossShuffle,
|
|
||||||
goal: Goal
|
goal: Goal
|
||||||
instrument_count: InstrumentCount
|
instrument_count: InstrumentCount
|
||||||
# 'itempool': ItemPool,
|
|
||||||
# 'bowwow': Bowwow,
|
|
||||||
# 'overworld': Overworld,
|
|
||||||
link_palette: LinkPalette
|
link_palette: LinkPalette
|
||||||
warps: Warps
|
warps: Warps
|
||||||
trendy_game: TrendyGame
|
trendy_game: TrendyGame
|
||||||
|
|||||||
@@ -71,7 +71,7 @@ class LinksAwakeningWebWorld(WebWorld):
|
|||||||
"setup/en",
|
"setup/en",
|
||||||
["zig"]
|
["zig"]
|
||||||
)]
|
)]
|
||||||
theme = "dirt"
|
theme = "ocean"
|
||||||
option_groups = ladx_option_groups
|
option_groups = ladx_option_groups
|
||||||
options_presets: typing.Dict[str, typing.Dict[str, typing.Any]] = {
|
options_presets: typing.Dict[str, typing.Dict[str, typing.Any]] = {
|
||||||
"Keysanity": {
|
"Keysanity": {
|
||||||
|
|||||||
Reference in New Issue
Block a user