Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 8 additions & 8 deletions worlds/mm_recomp/Items.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,18 +23,18 @@ class MMRItemData(NamedTuple):
"Progressive Magic": MMRItemData(
code=0x3469420020000,
type=ItemClassification.progression,
can_create=lambda options: options.shuffle_great_fairy_rewards.value,
can_create=lambda options: options.shuffle_great_fairy_rewards.value != 1,
num_exist=2
),
"Great Spin Attack": MMRItemData(
code=0x3469420020001,
type=ItemClassification.useful,
can_create=lambda options: options.shuffle_great_fairy_rewards.value
can_create=lambda options: options.shuffle_great_fairy_rewards.value != 1
),
"Double Defense": MMRItemData(
code=0x3469420020003,
type=ItemClassification.useful,
can_create=lambda options: options.shuffle_great_fairy_rewards.value
can_create=lambda options: options.shuffle_great_fairy_rewards.value != 1
),
"Bomber's Notebook": MMRItemData(
code=0x3469420000050,
Expand Down Expand Up @@ -195,7 +195,7 @@ class MMRItemData(NamedTuple):
"Great Fairy Mask": MMRItemData(
code=0x3469420000086,
type=ItemClassification.progression,
can_create=lambda options: options.shuffle_great_fairy_rewards.value
can_create=lambda options: options.shuffle_great_fairy_rewards.value != 1
),
"Gibdo Mask": MMRItemData(
code=0x3469420000087,
Expand All @@ -212,7 +212,7 @@ class MMRItemData(NamedTuple):
"Mask of Truth": MMRItemData(
code=0x346942000008A,
type=ItemClassification.progression,
can_create=lambda options: options.shuffle_spiderhouse_reward.value
can_create=lambda options: options.shuffle_spiderhouse_reward.value != 1
),
"Stone Mask": MMRItemData(
code=0x346942000008B,
Expand Down Expand Up @@ -271,7 +271,7 @@ class MMRItemData(NamedTuple):
"Great Fairy Sword": MMRItemData(
code=0x346942000003B,
type=ItemClassification.progression,
can_create=lambda options: options.shuffle_great_fairy_rewards.value
can_create=lambda options: options.shuffle_great_fairy_rewards.value != 1
),
"Progressive Bow": MMRItemData(
code=0x3469420000022,
Expand Down Expand Up @@ -508,13 +508,13 @@ class MMRItemData(NamedTuple):
"Blue Rupee": MMRItemData(
code=0x3469420000002,
type=ItemClassification.filler,
num_exist=14
num_exist=8
# ~ num_exist=6
),
"Red Rupee": MMRItemData(
code=0x3469420000004,
type=ItemClassification.filler,
num_exist=45
num_exist=30
# ~ num_exist=29
),
"Purple Rupee": MMRItemData(
Expand Down
63 changes: 42 additions & 21 deletions worlds/mm_recomp/Locations.py
Original file line number Diff line number Diff line change
Expand Up @@ -283,35 +283,43 @@ def can_create_heart_location(shp, c_or_p, loc_index):
),
"East Clock Town Shooting Gallery 40-49 Points": MMRLocationData(
region="Clock Town",
address=0x3469420000023
address=0x3469420000023,
can_create=lambda options: options.shuffle_minigames.value != 0
),
"East Clock Town Shooting Gallery Perfect 50 Points": MMRLocationData(
region="Clock Town",
address=0x346942007011D
address=0x346942007011D,
can_create=lambda options: options.shuffle_minigames.value == 2
),
"East Clock Town Honey and Darling Any Day": MMRLocationData(
region="Clock Town",
address=0x34694200800B5
address=0x34694200800B5,
can_create=lambda options: options.shuffle_minigames.value != 0
),
"East Clock Town Honey and Darling All Days": MMRLocationData(
region="Clock Town",
address=0x34694200700B5
address=0x34694200700B5,
can_create=lambda options: options.shuffle_minigames.value == 2
),
"East Clock Town Treasure Game Chest (Human)": MMRLocationData(
region="Clock Town",
address=0x3469420061705
address=0x3469420061705,
can_create=lambda options: options.shuffle_treasure_chest_game.value == 2
),
"East Clock Town Treasure Game Chest (Deku)": MMRLocationData(
region="Clock Town",
address=0x346942006172A
address=0x346942006172A,
can_create=lambda options: options.shuffle_treasure_chest_game.value == 2
),
"East Clock Town Treasure Game Chest (Goron)": MMRLocationData(
region="Clock Town",
address=0x346942006170C
address=0x346942006170C,
can_create=lambda options: options.shuffle_treasure_chest_game.value != 0
),
"East Clock Town Treasure Game Chest (Zora)": MMRLocationData(
region="Clock Town",
address=0x3469420061704
address=0x3469420061704,
can_create=lambda options: options.shuffle_treasure_chest_game.value == 2
),
"Bomber's Hideout Chest": MMRLocationData(
region="Clock Town",
Expand All @@ -327,23 +335,27 @@ def can_create_heart_location(shp, c_or_p, loc_index):
),
"North Clock Town Deku Playground Any Day": MMRLocationData(
region="Clock Town",
address=0x34694200801C9
address=0x34694200801C9,
can_create=lambda options: options.shuffle_minigames.value != 0
),
"North Clock Town Deku Playground All Days": MMRLocationData(
region="Clock Town",
address=0x34694200701C9
address=0x34694200701C9,
can_create=lambda options: options.shuffle_minigames.value == 2
),
"North Clock Town Save Old Lady": MMRLocationData(
region="Clock Town",
address=0x346942000008D
),
"North Clock Town Great Fairy Reward": MMRLocationData(
region="Clock Town",
address=0x3469420030000
address=0x3469420030000,
can_create=lambda options: options.shuffle_great_fairy_rewards.value != 0
),
"North Clock Town Great Fairy Reward (Has Transformation Mask)": MMRLocationData(
region="Clock Town",
address=0x3469420000086
address=0x3469420000086,
can_create=lambda options: options.shuffle_great_fairy_rewards.value != 0
),
"West Clock Town Lottery Any Day": MMRLocationData(
region="Clock Town",
Expand Down Expand Up @@ -523,11 +535,13 @@ def can_create_heart_location(shp, c_or_p, loc_index):
),
"Swamp Shooting Gallery 2120 Points": MMRLocationData(
region="Southern Swamp",
address=0x3469420000024
address=0x3469420000024,
can_create=lambda options: options.shuffle_minigames.value != 0
),
"Swamp Shooting Gallery 2180 Points": MMRLocationData(
region="Southern Swamp",
address=0x346942008011D
address=0x346942008011D,
can_create=lambda options: options.shuffle_minigames.value == 2
),
"Southern Swamp Deku Trade": MMRLocationData(
region="Southern Swamp",
Expand Down Expand Up @@ -733,7 +747,8 @@ def can_create_heart_location(shp, c_or_p, loc_index):
),
"Swamp Spider House Reward": MMRLocationData(
region="Swamp Spider House",
address=0x346942000008A
address=0x346942000008A,
can_create=lambda options: options.shuffle_spiderhouse_reward.value != 0
),
"Southern Swamp Grotto Chest": MMRLocationData(
region="Southern Swamp (Deku Palace)",
Expand Down Expand Up @@ -777,7 +792,8 @@ def can_create_heart_location(shp, c_or_p, loc_index):
),
"Woodfall Great Fairy Reward": MMRLocationData(
region="Woodfall",
address=0x3469420030001
address=0x3469420030001,
can_create=lambda options: options.shuffle_great_fairy_rewards.value != 0
),
"Woodfall Temple Entrance Chest SF": MMRLocationData(
region="Woodfall Temple",
Expand Down Expand Up @@ -1001,7 +1017,8 @@ def can_create_heart_location(shp, c_or_p, loc_index):
),
"Snowhead Great Fairy Reward": MMRLocationData(
region="Snowhead Temple",
address=0x3469420030002
address=0x3469420030002,
can_create=lambda options: options.shuffle_great_fairy_rewards.value != 0
),
"Snowhead Temple Elevator Room Invisible Platform Chest SF": MMRLocationData(
region="Snowhead Temple",
Expand Down Expand Up @@ -1179,7 +1196,8 @@ def can_create_heart_location(shp, c_or_p, loc_index):
),
"Great Bay Fisherman Game": MMRLocationData(
region="Great Bay",
address=0x3469420070292
address=0x3469420070292,
can_create=lambda options: options.shuffle_minigames.value != 0
),
"Zora Cape Underwater Like-Like HP": MMRLocationData(
region="Zora Cape",
Expand Down Expand Up @@ -1215,7 +1233,8 @@ def can_create_heart_location(shp, c_or_p, loc_index):
),
"Great Bay Great Fairy Reward": MMRLocationData(
region="Zora Cape",
address=0x3469420030003
address=0x3469420030003,
can_create=lambda options: options.shuffle_great_fairy_rewards.value != 0
),
"Zora Hall Shop Item 1": MMRLocationData(
region="Zora Hall",
Expand Down Expand Up @@ -1477,7 +1496,8 @@ def can_create_heart_location(shp, c_or_p, loc_index):
),
"Ocean Spider House Reward": MMRLocationData(
region="Ocean Spider House",
address=0x3469420000009
address=0x3469420000009,
can_create=lambda options: options.shuffle_spiderhouse_reward.value != 0
),
"Great Bay Temple Blender Pot SF": MMRLocationData(
region="Great Bay Temple",
Expand Down Expand Up @@ -1654,7 +1674,8 @@ def can_create_heart_location(shp, c_or_p, loc_index):
),
"Stone Tower Great Fairy Reward": MMRLocationData(
region="Ikana Canyon",
address=0x3469420030004
address=0x3469420030004,
can_create=lambda options: options.shuffle_great_fairy_rewards.value != 0
),
"Ikana Well Final Chest": MMRLocationData(
region="Beneath the Well",
Expand Down
53 changes: 49 additions & 4 deletions worlds/mm_recomp/Options.py
Original file line number Diff line number Diff line change
Expand Up @@ -98,9 +98,16 @@ class BossWarpsWithRemains(DefaultOnToggle):
display_name = "Warp to Bosses Using Remains"


class ShuffleSpiderHouseReward(Toggle):
"""Choose whether to shuffle the Mask of Truth given at the end of the Southern Spider House and the Wallet Upgrade at the end of the Ocean Spider House."""
class ShuffleSpiderHouseReward(Choice):
"""Choose how Swamp Spider House and Ocean Spider House rewards are shuffled.

disabled: Spider House rewards won't be shuffled into the pool.
vanilla: Spider House rewards will be vanilla. Mask of Truth will be in Swamp and a wallet upgrade in Ocean.
enabled: Spider House rewards will be shuffled. Any item can be shuffled at their locations."""
display_name = "Shuffle Spider House Rewards"
option_disabled = 0
option_vanilla = 1
option_enabled = 2


class RequiredSkullTokens(Range):
Expand Down Expand Up @@ -167,9 +174,17 @@ class Cowsanity(Toggle):
display_name = "Shuffle Cows"


class ShuffleGreatFairyRewards(Toggle):
"""Choose whether to shuffle Great Fairy rewards."""
class ShuffleGreatFairyRewards(Choice):
"""Choose how Great Fairy rewards are shuffled.

disabled: Great Fairy rewards won't be shuffled into the pool.
vanilla: Great Fairy rewards will be vanilla. For example, Magic will be behind Clock Town and Snowhead rewards.
enabled: Great Fairy rewards will be shuffled. Any item can be shuffled at their locations."""
display_name = "Shuffle Great Fairy Rewards"
option_disabled = 0
option_vanilla = 1
option_enabled = 2
default = 0


class RequiredStrayFairies(Range):
Expand Down Expand Up @@ -207,6 +222,34 @@ class IntroChecks(Toggle):
A way backwards through these areas has been added through the stone door at the bottom of the Clock Tower Interior."""
display_name = "Enable Intro Checks"

class ShuffleMinigames(Choice):
"""Choose whether the minigames are shuffled or not. The minigames affected are:
- Town and Swamp Shooting Galleries;
- Honey & Darling;
- Deku Playground;
- Great Bay Fisherman Game.

disabled: Listed minigames are not shuffled.
single: Listed minigames only have one location. Where applicable, the easier locations (any day/lowest points requirements) are shuffled.
everything: Listed minigames are fully shuffled."""
display_name = "Shuffle Minigames"
option_disabled = 0
option_single = 1
option_everything = 2
default = 1

class ShuffleTreasureChestGame(Choice):
"""Choose which chests in the Treasure Chest minigame are shuffled.

disabled: Chests are not shuffled.
goron_only: Only the reward as Goron is shuffled.
everything: Rewards for human, Deku, Goron, and Zora are shuffled."""
display_name = "Treasure Chest Minigame Shuffle"
option_disabled = 0
option_goron_only = 1
option_everything = 2
default = 1


class StartWithConsumables(DefaultOnToggle):
"""Choose whether to start with basic consumables (99 rupees, 10 deku sticks, 20 deku nuts)."""
Expand Down Expand Up @@ -295,6 +338,8 @@ class MMROptions(PerGameCommonOptions):
bosskeysanity: BossKeysanity
curiostity_shop_trades: CuriostityShopTrades
intro_checks: IntroChecks
shuffle_minigames: ShuffleMinigames
shuffle_treasure_chest_game: ShuffleTreasureChestGame
start_with_consumables: StartWithConsumables
permanent_chateau_romani: PermanentChateauRomani
start_with_inverted_time: StartWithInvertedTime
Expand Down
Loading