mirror of
https://github.com/ArchipelagoMW/Archipelago.git
synced 2026-03-28 22:03:23 -07:00
restore vanilla map when rooster is an item
https://github.com/daid/LADXR/pull/132
This commit is contained in:
@@ -153,7 +153,9 @@ def generateRom(args, world: "LinksAwakeningWorld"):
|
||||
if world.ladxr_settings.witch:
|
||||
patches.witch.updateWitch(rom)
|
||||
patches.softlock.fixAll(rom)
|
||||
patches.maptweaks.tweakMap(rom)
|
||||
if not settings.rooster:
|
||||
patches.maptweaks.tweakMap(rom)
|
||||
patches.maptweaks.tweakBirdKeyRoom(rom)
|
||||
patches.chest.fixChests(rom)
|
||||
patches.shop.fixShop(rom)
|
||||
patches.rooster.patchRooster(rom)
|
||||
|
||||
@@ -1,23 +1,6 @@
|
||||
from .droppedKey import DroppedKey
|
||||
from ..roomEditor import RoomEditor
|
||||
from ..assembler import ASM
|
||||
|
||||
|
||||
class BirdKey(DroppedKey):
|
||||
def __init__(self):
|
||||
super().__init__(0x27A)
|
||||
|
||||
def patch(self, rom, option, *, multiworld=None):
|
||||
super().patch(rom, option, multiworld=multiworld)
|
||||
|
||||
re = RoomEditor(rom, self.room)
|
||||
|
||||
# Make the bird key accessible without the rooster
|
||||
re.removeObject(1, 6)
|
||||
re.removeObject(2, 6)
|
||||
re.removeObject(3, 5)
|
||||
re.removeObject(3, 6)
|
||||
re.moveObject(1, 5, 2, 6)
|
||||
re.moveObject(2, 5, 3, 6)
|
||||
re.addEntity(3, 5, 0x9D)
|
||||
re.store(rom)
|
||||
|
||||
@@ -167,7 +167,9 @@ class World:
|
||||
prairie_island_seashell = Location().add(Seashell(0x0A6)).connect(ukuku_prairie, AND(FLIPPERS, r.bush)) # next to lv3
|
||||
Location().add(Seashell(0x08B)).connect(ukuku_prairie, r.bush) # next to seashell house
|
||||
Location().add(Seashell(0x0A4)).connect(ukuku_prairie, PEGASUS_BOOTS) # smash into tree next to phonehouse
|
||||
self._addEntrance("castle_jump_cave", ukuku_prairie, Location().add(Chest(0x1FD)), OR(AND(FEATHER, PEGASUS_BOOTS), ROOSTER)) # left of the castle, 5 holes turned into 3
|
||||
self._addEntrance("castle_jump_cave", ukuku_prairie, Location().add(Chest(0x1FD)), ROOSTER)
|
||||
if not options.rooster:
|
||||
self._addEntranceRequirement("castle_jump_cave", AND(FEATHER, PEGASUS_BOOTS)) # left of the castle, 5 holes turned into 3
|
||||
Location().add(Seashell(0x0B9)).connect(ukuku_prairie, POWER_BRACELET) # under the rock
|
||||
|
||||
left_bay_area = Location()
|
||||
@@ -379,7 +381,9 @@ class World:
|
||||
self._addEntrance("rooster_house", outside_rooster_house, None, None)
|
||||
bird_cave = Location()
|
||||
bird_key = Location().add(BirdKey())
|
||||
bird_cave.connect(bird_key, OR(AND(FEATHER, COUNT(POWER_BRACELET, 2)), ROOSTER))
|
||||
bird_cave.connect(bird_key, ROOSTER)
|
||||
if not options.rooster:
|
||||
bird_cave.connect(bird_key, AND(FEATHER, COUNT(POWER_BRACELET, 2))) # elephant statue added
|
||||
if options.logic != "casual":
|
||||
bird_cave.connect(lower_right_taltal, None, one_way=True) # Drop in a hole at bird cave
|
||||
self._addEntrance("bird_cave", outside_rooster_house, bird_cave, None)
|
||||
@@ -476,9 +480,10 @@ class World:
|
||||
castle_inside.connect(kanalet_chain_trooper, BOOMERANG, one_way=True) # kill the ball and chain trooper from the left side, then use boomerang to grab the dropped item
|
||||
animal_village_bombcave_heartpiece.connect(animal_village_bombcave, AND(PEGASUS_BOOTS, FEATHER)) # jump across horizontal 4 gap to heart piece
|
||||
desert_lanmola.connect(desert, BOMB) # use bombs to kill lanmola
|
||||
|
||||
|
||||
d6_connector_left.connect(d6_connector_right, AND(OR(FLIPPERS, PEGASUS_BOOTS), FEATHER)) # jump the gap in underground passage to d6 left side to skip hookshot
|
||||
bird_key.connect(bird_cave, COUNT(POWER_BRACELET, 2)) # corner walk past the one pit on the left side to get to the elephant statue
|
||||
if not options.rooster:
|
||||
bird_key.connect(bird_cave, COUNT(POWER_BRACELET, 2)) # corner walk past the one pit on the left side to get to the elephant statue
|
||||
fire_cave_bottom.connect(fire_cave_top, PEGASUS_BOOTS, one_way=True) # flame skip
|
||||
|
||||
if options.logic == 'glitched' or options.logic == 'hell':
|
||||
|
||||
@@ -25,3 +25,16 @@ def addBetaRoom(rom):
|
||||
re.store(rom)
|
||||
|
||||
rom.room_sprite_data_indoor[0x0FC] = rom.room_sprite_data_indoor[0x1A1]
|
||||
|
||||
|
||||
def tweakBirdKeyRoom(rom):
|
||||
# Make the bird key accessible without the rooster
|
||||
re = RoomEditor(rom, 0x27A)
|
||||
re.removeObject(1, 6)
|
||||
re.removeObject(2, 6)
|
||||
re.removeObject(3, 5)
|
||||
re.removeObject(3, 6)
|
||||
re.moveObject(1, 5, 2, 6)
|
||||
re.moveObject(2, 5, 3, 6)
|
||||
re.addEntity(3, 5, 0x9D)
|
||||
re.store(rom)
|
||||
|
||||
@@ -58,7 +58,7 @@ class TextShuffle(DefaultOffToggle):
|
||||
class Rooster(DefaultOnToggle, LADXROption):
|
||||
"""
|
||||
[On] Adds the rooster to the item pool.
|
||||
[Off] 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.
|
||||
[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.
|
||||
"""
|
||||
display_name = "Rooster"
|
||||
ladxr_name = "rooster"
|
||||
|
||||
Reference in New Issue
Block a user