Archipelago/worlds
el-u b7111eeccc
lufia2ac: fix disappearing Ancient key (#2537)
Since the coop update, the Ancient key (which is always the reward for defeating the boss) would disappear when leaving the cave, making it impossible to open the locked door behind the Ancient Cave entrance counter. While this is basically cosmetic and has no adverse effects on the multiworld (as the door does not lead to any multiworld locations and is only accessible after defeating the final boss anyway), players may still want to enter this room as part of a ritual to celebrate their victory.

Why does this happen? The game keeps track of two different inventories, one for outside and another one for the cave dive. When entering or leaving the cave, important things such as blue chest items and Iris treasures are automatically copied to the other inventory. However, it turns out that the Ancient key doesn't participate in this mechanism. Instead, the script that runs when exiting the cave checks whether event flag 0xC3 is set, and if it is on, it calls a script action that adds the key item to the outside inventory. (Whether or not the player actually had the key item in their in-cave inventory is not checked at all; only the flag matters.)

In the unmodified game, that flag is set by the cutscene script that awards the key. It actually sets two event flags, 0xC3 and 0xD1. The latter is used by the game when trying to display the boss in the cafe basement and is used by AP as the indicator that the boss goal was completed. With the coop update, the event script method that created the key was intercepted and modified to send out a location check instead. That location always has the Ancient key as a fixed item placement; the benefit of handling it as a remote item is that in this way the key essentially serves as a signal that transmits the information of the boss' defeat to all clients cooping on the slot. When receiving the key, however, the custom ASM did only set flag 0xD1. As part of the bugfix, it is now changed to set flag 0xC3 as well.

But that alone is still not enough to make it work. The subroutine that is called by the game to create the key when exiting the cave with flag 0xC3 is the same subroutine that gets called in the cutscene that originally tried to award the key. But that's the one that has been rewritten to send the location check instead. So instead of creating the key when leaving the cave, it would just send the same location check again, effectively doing nothing. Therefore, the other part of the bugfix is to only intercept this subroutine if the player is currently on the Ancient Cave Final Floor (where the cutscene takes place), thus making it possible to recreate the key item when exiting.
2023-12-04 00:06:52 +01:00
..
_bizhawk BizHawkClient: Use `local_path` when autolaunching BizHawk with lua script (#2526) 2023-11-28 22:56:27 +01:00
_sc2common SC2 WoL - Mod, Item and Location update (#2113) 2023-09-15 02:22:10 +02:00
adventure Core: deprecate Utils.get_options and remove Utils.get_default_options (#2352) 2023-10-28 19:32:12 +02:00
alttp LttP: remove extra default = False (#2497) 2023-11-25 11:12:13 +01:00
archipidle Core: make state.prog_items a `Dict[int, Counter[str]]` (#2407) 2023-11-02 06:41:20 +01:00
bk_sudoku WebHost: consistent naming for player options (#2037) 2023-10-24 02:20:08 +02:00
blasphemous Blasphemous: Include ranged attack in logic for all difficulties (#2271) 2023-10-28 21:47:14 +02:00
bumpstik Bumper Stickers: add location rules (#2254) 2023-10-25 10:22:09 +02:00
checksfinder Core: remove duplicate state.item_count (#2463) 2023-11-24 00:35:37 +01:00
clique Clique: Refactors and Additional Features supported by v1.5 (#1989) 2023-07-19 17:16:03 -05:00
dark_souls_3 DS3: update setup guide to preserve downpatching instructions (#2531) 2023-11-30 09:29:55 +01:00
dkc3 WebHost: offer combined yaml file on /check if successful (#2337) 2023-10-22 02:02:30 +02:00
dlcquest Core: Introduce new Option class NamedRange (#2330) 2023-11-24 17:10:52 -06:00
doom_1993 DOOM 1993: Added various new options (#2067) 2023-11-25 08:43:14 -06:00
doom_ii DOOM II: implement new game (#2255) 2023-11-24 18:08:02 +01:00
factorio Core: update modules, move orjson to core (#2489) 2023-11-23 21:36:20 +01:00
ff1 Docs, Various Games: Add Unique Local Commands to Game Page (#2285) 2023-10-31 17:20:24 -04:00
ffmq Final Fantasy Mystic Quest: Implement new game (#1909) 2023-11-26 17:17:59 +01:00
generic Docs: Added Note Explaining BK and fix typo in advanced settings (#2316) 2023-10-22 13:11:19 +02:00
heretic Heretic: implement new game (#2256) 2023-11-25 15:22:30 +01:00
hk Core: Introduce new Option class NamedRange (#2330) 2023-11-24 17:10:52 -06:00
hylics2 Hylics 2: Unique entrance names, fix APWorld on 3.8 (#2460) 2023-11-15 07:03:40 +01:00
kh2 KH2: Version 2 (#2009) 2023-11-25 08:46:00 -06:00
ladx LADX: Fix bug with Webhost usage (#2556) 2023-12-03 21:24:35 +01:00
landstalker Landstalker: implement new game (#1808) 2023-11-25 09:00:15 -06:00
lingo Lingo: Default color shuffle to on (#2548) 2023-12-04 00:06:11 +01:00
lufia2ac lufia2ac: fix disappearing Ancient key (#2537) 2023-12-04 00:06:52 +01:00
meritous Core: change Region caching to on_change from on-miss-strategy (#2366) 2023-10-29 19:47:37 +01:00
messenger The Messenger, LADX: use collect and remove as intended (#2093) 2023-11-25 15:07:02 -06:00
minecraft minecraft: avoid duplicate prefix in output file name (#2048) 2023-10-28 21:43:09 +02:00
mmbn3 MMBN3: Small Bug Fixes (#2282) 2023-11-24 11:14:05 -06:00
musedash Muse Dash: Presets and Song Updates (#2512) 2023-11-25 22:13:59 -06:00
noita Core: remove duplicate state.item_count (#2463) 2023-11-24 00:35:37 +01:00
oot OoT: fix incorrect calls to sweep_for_events (#2417) 2023-11-02 20:02:38 +01:00
overcooked2 Core: remove duplicate state.item_count (#2463) 2023-11-24 00:35:37 +01:00
pokemon_emerald Pokemon Emerald: Fix tracker flags being reset in menus (#2511) 2023-11-25 22:13:08 -06:00
pokemon_rb Pokémon RB: Fix connection names + missing connection (#2553) 2023-12-02 18:40:38 +01:00
raft Raft: Use world.random instead of global random (#2439) 2023-11-09 08:47:36 +01:00
rogue_legacy Core: remove duplicate state.item_count (#2463) 2023-11-24 00:35:37 +01:00
ror2 RoR2: 1.3.0 content update (#2425) 2023-11-22 09:20:32 -06:00
sa2b SA2B: Add AP 0.4.4 Game Chao Names (#2510) 2023-11-25 22:12:38 -06:00
sc2wol SC2: 0.4.3 bugfixes (#2273) 2023-11-08 12:00:55 -06:00
shivers Shivers: Implement New Game (#1836) 2023-11-24 17:23:45 -06:00
sm SM: fix missed SMWorld.spheres in #2400 (#2419) 2023-11-02 21:08:36 +01:00
sm64ex sm64ex: Replace old launcher tutorial (#2383) 2023-11-23 12:10:32 -06:00
smw WebHost: offer combined yaml file on /check if successful (#2337) 2023-10-22 02:02:30 +02:00
smz3 Core: make state.prog_items a `Dict[int, Counter[str]]` (#2407) 2023-11-02 06:41:20 +01:00
soe Core: remove duplicate state.item_count (#2463) 2023-11-24 00:35:37 +01:00
spire Core: remove duplicate state.item_count (#2463) 2023-11-24 00:35:37 +01:00
stardew_valley Stardew Valley: Fixed potential softlock with walnut purchases if Entrance Randomizer locks access to the field office (#2261) 2023-11-30 09:32:32 +01:00
subnautica Subnautica: avoid cache recreation in create_regions call and clean up function. (#2365) 2023-10-26 00:03:14 +02:00
terraria Docs: Terraria Setup Guide added information about the Upgraded Research Mod (#2338) 2023-11-01 16:08:04 -05:00
timespinner Timespinner: New options from TS Rando v1.25 + Logic fix (#2090) 2023-11-22 08:17:33 -06:00
tloz Docs, Various Games: Add Unique Local Commands to Game Page (#2285) 2023-10-31 17:20:24 -04:00
undertale Undertale: Logic fixes (#2436) 2023-11-08 11:50:29 -06:00
v6 sm64ex,v6: Use create_items for itempool modification (#1674) 2023-04-07 19:03:28 -05:00
wargroove Wargroove: Fixed WargrooveClient retaining victory and location information and minor doc fix (#2464) 2023-11-16 04:35:20 -06:00
witness The Witness: New junk hints (#2495) 2023-11-24 13:38:46 -06:00
zillion Core: Introduce new Option class NamedRange (#2330) 2023-11-24 17:10:52 -06:00
AutoSNIClient.py Core: SNI Client Refactor (#1083) 2022-10-25 19:54:43 +02:00
AutoWorld.py WebHost, Core: Developer-defined game option presets. (#2143) 2023-11-16 04:37:06 -06:00
Files.py Core: limit parallel APContainer writing (#2443) 2023-11-13 06:46:40 +01:00
LauncherComponents.py KH2: Version 2 (#2009) 2023-11-25 08:46:00 -06:00
__init__.py WebHost: Refactor `tracker.py`, removal of dead code, and tweaks to layouts of some tracker pages. (#2438) 2023-11-18 12:29:35 -06:00