Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement Progressive Sword in logic #334

Merged
merged 6 commits into from
Apr 21, 2023
Merged
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
4 changes: 1 addition & 3 deletions ph_rando/patcher/_items.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
ITEMS: dict[str, int] = {
'SmallKey': 0x1,
'SmallGreenRupee': 0x2,
'OshusSword': 0x3,
'ProgressiveSword': 0x3,
'Shield': 0x4,
'ForceGem': 0x6, # TODO: difference between this and 0x1C?
'Bombs': 0x7,
Expand Down Expand Up @@ -104,8 +104,6 @@
'RandomTreasure2': 0x86, # TODO: what is this, and how does it relate to other treasures?
# TODO: update these when their ids are known
'PhantomHourglass': -1,
'PhantomSword': -1,
'PhantomSwordBlade': -1,
'Sand2M': -1,
'PowerSpirit': -1,
'WisdomSpirit': -1,
Expand Down
6 changes: 0 additions & 6 deletions ph_rando/shuffler/_parser.py
Original file line number Diff line number Diff line change
Expand Up @@ -201,12 +201,6 @@ def evaluate_requirement(
"""
match type:
case EdgeDescriptor.ITEM.value:
# Special case: "Sword" means either OshusSword or PhantomSword.
# TODO: remove this, once the semantics around progressive sword logic are
# sorted out.
if value == 'Sword':
value = 'OshusSword'

# If a certain number of this item is required, check that.
# Otherwise, just check if we have one of this item.
count_descriptor = re.match(r'(.+)\[(\d+)\]', value)
Expand Down
4 changes: 1 addition & 3 deletions ph_rando/shuffler/_shuffler.py
Original file line number Diff line number Diff line change
Expand Up @@ -41,10 +41,8 @@
'Hammer',
'KingKey',
'GhostKey',
'OshusSword',
'ProgressiveSword',
'PhantomHourglass',
'PhantomSwordBlade',
'PhantomSword',
'RegalNecklace',
'SalvageArm',
'Shovel',
Expand Down
98 changes: 49 additions & 49 deletions ph_rando/shuffler/enemies.json
Original file line number Diff line number Diff line change
@@ -1,57 +1,57 @@
{
"red_chu_chu": "item Sword | item Hammer | item Bow | macro Bombs",
"yellow_chu_chu": "item Sword | item Hammer | item Bow | macro Bombs",
"rock_chu_chu": "item Hammer | macro Bombs | (item GrapplingHook & (item Sword | item Bow))",
"blue_chu_chu": "(item Sword & (item Boomerang | item GrapplingHook)) | item Hammer | item Bow | macro Bombs",
"red_chu_chu": "macro Sword | item Hammer | item Bow | macro Bombs",
"yellow_chu_chu": "macro Sword | item Hammer | item Bow | macro Bombs",
"rock_chu_chu": "item Hammer | macro Bombs | (item GrapplingHook & (macro Sword | item Bow))",
"blue_chu_chu": "(macro Sword & (item Boomerang | item GrapplingHook)) | item Hammer | item Bow | macro Bombs",

"keese": "item Sword | item Bow | item Hammer | macro Bombs | item Boomerang | item GrapplingHook",
"keese": "macro Sword | item Bow | item Hammer | macro Bombs | item Boomerang | item GrapplingHook",
"fire_keese": "item Bow | item Hammer | macro Bombs | item Boomerang | item GrapplingHook",
"ice_keese": "item Bow | item Hammer | macro Bombs | item Boomerang | item GrapplingHook",

"fire_bubble": "(item Sword & (item Boomerang | item GrapplingHook)) | item Bow | item Hammer | macro Bombs",
"ice_bubble": "(item Sword & (item Boomerang | item GrapplingHook)) | item Bow | item Hammer | macro Bombs",
"fire_bubble": "(macro Sword & (item Boomerang | item GrapplingHook)) | item Bow | item Hammer | macro Bombs",
"ice_bubble": "(macro Sword & (item Boomerang | item GrapplingHook)) | item Bow | item Hammer | macro Bombs",

"miniblin": "item Sword | item Bow | item Hammer | macro Bombs",
"pirate_miniblin": "item Sword | item Bow | item Hammer | macro Bombs",
"miniblin": "macro Sword | item Bow | item Hammer | macro Bombs",
"pirate_miniblin": "macro Sword | item Bow | item Hammer | macro Bombs",

"stalfos": "item Sword | item Bow | item Hammer | macro Bombs",
"stalfos_warrior": "(item Sword & (item Boomerang | item GrapplingHook)) | item Bow | item Hammer | macro Bombs",
"stalfos": "macro Sword | item Bow | item Hammer | macro Bombs",
"stalfos_warrior": "(macro Sword & (item Boomerang | item GrapplingHook)) | item Bow | item Hammer | macro Bombs",

"like_like": "item Sword | item Bow | item Hammer | macro Bombs",
"green_rupee_like": "item Sword | item Bow | item Hammer | macro Bombs",
"blue_rupee_like": "item Sword | item Bow | item Hammer | macro Bombs",
"red_rupee_like": "item Sword | item Bow | item Hammer | macro Bombs",
"like_like": "macro Sword | item Bow | item Hammer | macro Bombs",
"green_rupee_like": "macro Sword | item Bow | item Hammer | macro Bombs",
"blue_rupee_like": "macro Sword | item Bow | item Hammer | macro Bombs",
"red_rupee_like": "macro Sword | item Bow | item Hammer | macro Bombs",

"moldorm": "item Sword | item Bow | item Hammer | macro Bombs",
"pols_voice": "item Sword | item Bow | item Hammer | macro Bombs",
"octorok": "item Sword | item Hammer | item Bow | macro Bombs",
"moldorm": "macro Sword | item Bow | item Hammer | macro Bombs",
"pols_voice": "macro Sword | item Bow | item Hammer | macro Bombs",
"octorok": "macro Sword | item Hammer | item Bow | macro Bombs",
"terrorpin": "item Hammer",
"rope": "item Sword | item Bow | item Hammer | macro Bombs",
"geozard": "((item Sword | item Bow) & item Boomerang) | item Hammer | macro Bombs",
"crow": "item Sword | item Bow | item Hammer | macro Bombs",
"rope": "macro Sword | item Bow | item Hammer | macro Bombs",
"geozard": "((macro Sword | item Bow) & item Boomerang) | item Hammer | macro Bombs",
"crow": "macro Sword | item Bow | item Hammer | macro Bombs",
"armos": "item Bow | item Hammer | macro Bombs",
"beamos": "item Bow | item Hammer",
"eye_slug": "item Sword | item Bow | item Hammer | macro Bombs",
"hardhat_beetle": "item Sword | item Bow | item Hammer | macro Bombs",
"poe": "item Sword | item Bow | item Hammer | macro Bombs",
"hinox": "item Sword | item Bow | item Hammer | macro Bombs",
"skulltula": "item Sword | item Bow | item Hammer | macro Bombs | item GrapplingHook",
"stag_beetle": "(item Sword & item Boomerang) | item Bow | item Hammer | macro Bombs",
"eye_slug": "macro Sword | item Bow | item Hammer | macro Bombs",
"hardhat_beetle": "macro Sword | item Bow | item Hammer | macro Bombs",
"poe": "macro Sword | item Bow | item Hammer | macro Bombs",
"hinox": "macro Sword | item Bow | item Hammer | macro Bombs",
"skulltula": "macro Sword | item Bow | item Hammer | macro Bombs | item GrapplingHook",
"stag_beetle": "(macro Sword & item Boomerang) | item Bow | item Hammer | macro Bombs",
"sandworm": "item Bombs | state BombFlower",
"red_tektite": "item Sword | item Bow | item Hammer | macro Bombs",
"blue_tektite": "item Sword | item Bow | item Hammer | macro Bombs",
"yook": "(item Sword | item Bow | item Hammer) & (item Bombs | state BombFlower)",
"jolene": "item Sword",
"red_tektite": "macro Sword | item Bow | item Hammer | macro Bombs",
"blue_tektite": "macro Sword | item Bow | item Hammer | macro Bombs",
"yook": "(macro Sword | item Bow | item Hammer) & (item Bombs | state BombFlower)",
"jolene": "macro Sword",
"winder": "flag Unkillable",
"gel": "item Sword | item Bow | item Hammer | macro Bombs",
"rat": "item Sword | item Bow | item Hammer | macro Bombs | item GrapplingHook",
"gel": "macro Sword | item Bow | item Hammer | macro Bombs",
"rat": "macro Sword | item Bow | item Hammer | macro Bombs | item GrapplingHook",

"phantom": "item PhantomSword",
"swift_phantom": "item PhantomSword",
"gold_phantom": "item PhantomSword",
"reapling": "item PhantomSword",
"phantom_eye": "item Sword | item Bow | item Hammer | macro Bombs",
"wizzrobe": "item Sword | item Bow | item Hammer | macro Bombs",
"phantom": "macro PhantomSword",
"swift_phantom": "macro PhantomSword",
"gold_phantom": "macro PhantomSword",
"reapling": "macro PhantomSword",
"phantom_eye": "macro Sword | item Bow | item Hammer | macro Bombs",
"wizzrobe": "macro Sword | item Bow | item Hammer | macro Bombs",

"cannon_boat": "item Cannon",
"eyeball_monster": "item Cannon",
Expand All @@ -61,16 +61,16 @@
"giant_eye_plant": "item Cannon",
"massive_eye": "item Cannon",

"crayk": "(item Sword | item Hammer) & item Bow",
"craykling": "item Sword | item Bow | item Hammer | macro Bombs",
"blaaz": "item Sword & item Boomerang",
"cubus_sisters": "item Sword",
"dongorongo": "item Sword & item Bombchus",
"gleeok": "(item Sword | item Hammer) & item GrapplingHook",
"eox": "item Sword & item Hammer",
"cyclok": "item Sword | item Hammer",
"crayk": "(macro Sword | item Hammer) & item Bow",
"craykling": "macro Sword | item Bow | item Hammer | macro Bombs",
"blaaz": "macro Sword & item Boomerang",
"cubus_sisters": "macro Sword",
"dongorongo": "macro Sword & item Bombchus",
"gleeok": "(macro Sword | item Hammer) & item GrapplingHook",
"eox": "macro Sword & item Hammer",
"cyclok": "macro Sword | item Hammer",

"bellum": "item PhantomSword & item Bow & item CourageSpirit",
"bellum": "macro PhantomSword & item Bow & item CourageSpirit",
"ghost_ship": "item Cannon",
"bellumbeck": "item PhantomSword & item CourageSpirit"
"bellumbeck": "macro PhantomSword & item CourageSpirit"
}
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ area FireTemple:
TopRight -> LockedDoorToTopRight
LockedDoorToTopRight -> Entrance: open LockedDoorToTopRight
LockedDoorToTopRight -> TopRight: open LockedDoorToTopRight
TopRight <-> Switches: (item Boomerang | item Sword | macro Bombs)
TopRight <-> Switches: (item Boomerang | macro Sword | macro Bombs)
Entrance <-> StairsMiddle: flag FireMiddleDoor

node TopLeft:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ area IceTemple:

RightSide -> TopRight: (open IceTempleKey & lose SwitchBlue & state SwitchRed)

TopRight -> RightSide: ((lose SwitchBlue & state SwitchRed) | (item Bow | item Boomerang | item Bombs | item Bombchus | (item Sword & item CourageSpiritLv1)))
TopRight -> RightSide: ((lose SwitchBlue & state SwitchRed) | (item Bow | item Boomerang | item Bombs | item Bombchus | (macro Sword & item CourageSpiritLv1)))

AboveBombableWalls -> BeforeBossKey: (item Boomerang & item Bow & item GrapplingHook & lose SwitchRed & state SwitchBlue)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ area IceTemple:
Arena -> Stairs: (lose BombFlower & item GrapplingHook)
Arena -> AfterArena: (lose BombFlower & defeated Gel & defeated WhiteYook)

AfterArena <-> Middle: (item Sword | item Boomerang)
AfterArena <-> Middle: (macro Sword | item Boomerang)

Middle <-> Top: item Bow
Middle <-> TopRight: open IceTempleKey
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ area IceTemple:
node StairsLeft:
door ToF2Left

RightSide <-> Main: (item GrapplingHook | item Boomerang | item Bow | (item Sword & item CourageSpiritLv1))
RightSide <-> Main: (item GrapplingHook | item Boomerang | item Bow | (macro Sword & item CourageSpiritLv1))

Main <-> Switch: item Bombs

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ area MutohTemple:
door ToB2TopLeft

MiddleStairsF1 <-> TopLeft: (state WaterUp & lose WaterDown)
TopLeft <-> HitWaterSwitch: (open MutohKey & (item Sword | item Bow))
TopLeft <-> HitWaterSwitch: (open MutohKey & (macro Sword | item Bow))


TopLeft -> TopLeftArena: (state WaterUp & lose WaterDown)
Expand Down
4 changes: 2 additions & 2 deletions ph_rando/shuffler/logic/Dungeons/ToTOK/B10/B10.logic
Original file line number Diff line number Diff line change
Expand Up @@ -27,13 +27,13 @@ area TempleOfTheOceanKing:
flag LeftSpikes

TopOuter -> Switch: item Bombchus
MiddleRing -> Switch: (item Sword | item Boomerang | macro Bombs | item Bow | item Hammer)
MiddleRing -> Switch: (macro Sword | item Boomerang | macro Bombs | item Bow | item Hammer)


node Center:
enemy PhantomEye3

MiddleRing -> Center: (item Sword | item Boomerang | macro Bombs | item Bow | item Hammer)
MiddleRing -> Center: (macro Sword | item Boomerang | macro Bombs | item Bow | item Hammer)
Center -> MiddleRing


Expand Down
2 changes: 1 addition & 1 deletion ph_rando/shuffler/logic/Dungeons/ToTOK/B11/B11.logic
Original file line number Diff line number Diff line change
Expand Up @@ -21,4 +21,4 @@ area TempleOfTheOceanKing:

Main -> DefeatEye: (defeated PhantomEye1 & defeated PhantomEye2 & defeated PhantomEye3 & defeated PhantomEye4)
Main -> DefeatPhantom: (defeated GoldPhantomLeft & defeated GoldPhantomRight)
Main -> LeftStairs: (item Shovel & (macro Bombs | item Sword | item Hammer | item Boomerang | item Bow))
Main -> LeftStairs: (item Shovel & (macro Bombs | macro Sword | item Hammer | item Boomerang | item Bow))
2 changes: 1 addition & 1 deletion ph_rando/shuffler/logic/Dungeons/ToTOK/B12/B12.logic
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ area TempleOfTheOceanKing:
node PhantomGem:
chest PhantomForceGem

Main -> PhantomGem: (item Bow | item Hammer | item Boomerang | macro Bombs | item Sword)
Main -> PhantomGem: (item Bow | item Hammer | item Boomerang | macro Bombs | macro Sword)


node AfterTriforce:
Expand Down
2 changes: 1 addition & 1 deletion ph_rando/shuffler/logic/Dungeons/ToTOK/B13/B13.logic
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,6 @@ area TempleOfTheOceanKing:
node DefeatPhantom:
door ToBridgeRoom

Main -> Gauntlet: item PhantomSword
Main -> Gauntlet: macro PhantomSword
Gauntlet -> DefeatPhantom: (defeated BluePhantom1 & defeated BluePhantom2 & defeated BluePhantom3 & defeated SwiftPhantom1 & defeated SwiftPhantom2 & defeated SwiftPhantom3 & defeated GoldPhantom1 & defeated GoldPhantom2 & defeated GoldPhantom3)
DefeatPhantom -> Main
2 changes: 1 addition & 1 deletion ph_rando/shuffler/logic/Dungeons/ToTOK/B2/B2.logic
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ area TempleOfTheOceanKing:
node SummonKey:
flag KeySpawned

Upper <-> SummonKey: (item Sword | item Boomerang | item Bow | item Hammer | macro Bombs | item GrapplingHook)
Upper <-> SummonKey: (macro Sword | item Boomerang | item Bow | item Hammer | macro Bombs | item GrapplingHook)

node Lower:
enemy PatrollingPhantom
Expand Down
2 changes: 1 addition & 1 deletion ph_rando/shuffler/logic/Dungeons/ToTOK/B3/B3.logic
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,6 @@ area TempleOfTheOceanKing:

Main <-> KeyDoor: open ChestBehindDoor
Main <-> EyeTarget: item Bow
Main <-> AllDefeatChest: (item PhantomSword & item GrapplingHook)
Main <-> AllDefeatChest: (macro PhantomSword & item GrapplingHook)
Main <-> Ledge: item GrapplingHook
Main -> DoorToChartRoom: (state Gem1B3 & state Gem2B3 & state Gem3B3)
4 changes: 2 additions & 2 deletions ph_rando/shuffler/logic/Dungeons/ToTOK/B4/B4.logic
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,8 @@ area TempleOfTheOceanKing:
node EyesDefeated:
chest EyeKiller

TopRight -> Bottom: ((item Sword & item CourageSpiritLv1) | item Boomerang | item Bow | item Bombchus | item GrapplingHook | item Hammer)
Bottom -> TopRight: (item Sword | item Boomerang | item Bow | item Bombchus | item GrapplingHook | item Hammer)
TopRight -> Bottom: ((macro Sword & item CourageSpiritLv1) | item Boomerang | item Bow | item Bombchus | item GrapplingHook | item Hammer)
Bottom -> TopRight: (macro Sword | item Boomerang | item Bow | item Bombchus | item GrapplingHook | item Hammer)

Bottom <-> KeyDoorTopLeft: item Bombchus
KeyDoorTopLeft <-> TopLeftStaircase: open TopLeftDoor
Expand Down
4 changes: 2 additions & 2 deletions ph_rando/shuffler/logic/Dungeons/ToTOK/B9/B9.logic
Original file line number Diff line number Diff line change
Expand Up @@ -28,13 +28,13 @@ area TempleOfTheOceanKing:
node DefeatPhantom:
chest PhantomKiller

Main -> DefeatPhantom: (((item Sword | item Boomerang) & item Bow) | defeated SwiftPhantom)
Main -> DefeatPhantom: (((macro Sword | item Boomerang) & item Bow) | defeated SwiftPhantom)

node PhantomCrystal:
chest SquareCrystal

DefeatPhantom -> PhantomCrystal
Main -> PhantomCrystal: (item Bow | macro Bombs | item Sword | item GrapplingHook | item Hammer)
Main -> PhantomCrystal: (item Bow | macro Bombs | macro Sword | item GrapplingHook | item Hammer)

node ToChartRoom:
door ToB9ChartRoom
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ area WindTemple:
chest BossKey

MiddleRight <-> TopRight: macro Bombs
TopRight -> BossKeyChest: (item Sword | item Bombs) # you can use two bombs here. TODO: can two bombchus be used?
TopRight -> BossKeyChest: (macro Sword | item Bombs) # you can use two bombs here. TODO: can two bombchus be used?
BossKeyChest -> BossKeyHoleRoom

room B1:
Expand Down
10 changes: 5 additions & 5 deletions ph_rando/shuffler/logic/NE Sea/Maze Island/MazeIsland.logic
Original file line number Diff line number Diff line change
Expand Up @@ -26,10 +26,10 @@ area MazeIsland:
chest SmallRedRupeeDigSpot2
chest SmallRedRupeeDigSpot3

Port -> BeginnerReward: (item Bow & item Sword)
BeginnerReward -> NormalReward: (item Bow & item Sword)
NormalReward -> ExpertReward: (item Bow & item Sword & item GrapplingHook & item Boomerang)
Port -> BeginnerReward: (item Bow & macro Sword)
BeginnerReward -> NormalReward: (item Bow & macro Sword)
NormalReward -> ExpertReward: (item Bow & macro Sword & item GrapplingHook & item Boomerang)

Port -> BombableWall: (macro Bombs & item Sword)
Port -> BombableWall: (macro Bombs & macro Sword)

Port -> DigSpots: (item Bow & item Sword & item Shovel)
Port -> DigSpots: (item Bow & macro Sword & item Shovel)
Original file line number Diff line number Diff line change
Expand Up @@ -10,5 +10,5 @@ area RedLionShip:
node TradingSequence:
chest Kaleidoscope

Boat <-> Fight: item Sword
Boat <-> Fight: macro Sword
Boat <-> TradingSequence: item HeroNewClothes
2 changes: 1 addition & 1 deletion ph_rando/shuffler/logic/NW Sea/Zauz Island/Zauz.json
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@
{
"name": "ZauzPhantomSword",
"type": "event",
"contents": "PhantomSwordBlade",
"contents": "ProgressiveSword",
"bmg_file_path": "English/Message/sennin.bmg",
"bmg_instruction_index": -1
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
{
"name": "SwordChest",
"type": "chest",
"contents": "OshusSword",
"contents": "ProgressiveSword",
"zmb_file_path": "Map/isle_main/map19.bin/zmb/isle_main_19.zmb",
"zmb_mapobject_index": 1
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
"chests": [
{
"name": "PhantomSword",
"contents": "PhantomSword",
"contents": "ProgressiveSword",
"type": "event",
"bmg_file_path": "TODO",
"bmg_instruction_index": -1
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,4 @@ area Mercay:
node PhantomSword:
chest PhantomSword

Main -> PhantomSword: (item PhantomSwordBlade & item PhantomHourglass)
Main -> PhantomSword: (macro PhantomSwordBlade & item PhantomHourglass)
Original file line number Diff line number Diff line change
Expand Up @@ -10,4 +10,4 @@ area Mercay:

node Grotto:
door Grotto
South <-> Grotto: item Sword
South <-> Grotto: macro Sword
7 changes: 5 additions & 2 deletions ph_rando/shuffler/macros.json
Original file line number Diff line number Diff line change
@@ -1,8 +1,11 @@
{
"Bombs": "item Bombs | item Bombchus | state BombFlower",
"SwordBeam": "item Sword & item CourageSpiritLv1",
"Sword": "item ProgressiveSword[1]",
"PhantomSwordBlade": "item ProgressiveSword[2]",
"PhantomSword": "item ProgressiveSword[3]",
"SwordBeam": "macro Sword & item CourageSpiritLv1",

"HitSwitch": "item Sword | item Boomerang | item Bow | item GrapplingHook | item Bombs | item Bombchus | state BombFlower",
"HitSwitch": "macro Sword | item Boomerang | item Bow | item GrapplingHook | item Bombs | item Bombchus | state BombFlower",

"HammerClip": "setting HammerClip & item Hammer",
"HammerReach": "setting HammerReach & item Hammer",
Expand Down
4 changes: 2 additions & 2 deletions tests/test_shuffler.py
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@
('item Bombchus | item Bombs', ['Bombs', 'Boomerang', 'Cannon'], {}, True),
('item Bombchus | item Bombs', ['Bombchus', 'Boomerang', 'Cannon'], {}, True),
('item Bombchus | item Bombs', ['Boomerang', 'Cannon', 'Sword'], {}, False),
('item Bombchus | item Bombs | item Sword', ['Boomerang', 'Cannon', 'OshusSword'], {}, True), # noqa: E501
('item Bombchus | item Bombs | item ProgressiveSword', ['Boomerang', 'Cannon', 'ProgressiveSword'], {}, True), # noqa: E501
# Test more complex nested expressions
('item Boomerang & ((item Bombs | item Bombchus) | (item GrapplingHook & item Bow))', ['Bombs'], {}, False), # noqa: E501
('item Boomerang & ((item Bombs | item Bombchus) | (item GrapplingHook & item Bow))', ['Boomerang', 'Bombs'], {}, True), # noqa: E501
Expand All @@ -59,7 +59,7 @@
('item Boomerang & ((item Bombs | item Bombchus) | (item GrapplingHook & item Bow))', ['Boomerang', 'GrapplingHook', 'Bow'], {}, True), # noqa: E501
# Test expression with a lot of redundant parentheses, which shouldn't affect results
# other than additional performance overhead.
('(((((item Sword | ((item Shield)))))))', ['OshusSword'], {}, True),
('(((((item ProgressiveSword | ((item Shield)))))))', ['ProgressiveSword'], {}, True),
# fmt: on
],
)
Expand Down