OoTRandomizer / OoT-Randomizer

A randomizer for Ocarina of Time.
Other
403 stars 233 forks source link

Saving in Link's House as Adult doesn't respawn you in Link's House, on random spawns #1209

Open r0bd0g opened 3 years ago

r0bd0g commented 3 years ago

Dotzo encountered this in Freaky Friday today. https://www.twitch.tv/videos/834402648 (I'm assuming it's rando spawns that is the culprit.)

r0bd0g commented 3 years ago

It's conceivable that if you had some settings where link's house connects directly into a dungeon, that you could end up stuck in that loop, if the savewarp worked correctly. I'm not sure even on Roman's such a scenario is allowed to occur? I haven't played any full mixed pools or decoupled enough to know.

If this is a problem I think it'd be preferred if the exit to Link's House was guaranteed not to be a dungeon? Or, maybe more complicated, confirm a no item (or is starting items safe?) path from Link's House to a non-dungeon area as adult.

Zannick commented 3 years ago

I'm not sure I'm understanding the desired behavior here, even given that saves in Link's House are loaded in Link's House. Do you want saving in Link's House as adult to result in loading in Link's House as adult, instead of savewarping to adult spawn? (What about similar for child?) Why?

The logic doesn't really account for the exact nature of savewarping always returning you to the start of your current dungeon or your overworld spawn point, it just assumes that your access everywhere is always repeatable. If there were a closed loop of dungeons exiting into each other then it's non-repeatable root access and the seed would be broken without a warp song out. (I guess Link's House is a dungeon in vanilla?)

EntranceShuffle does attempt to guarantee a path from non-starting age spawn to ToT, and from any age spawn to a time-passing region, both without collecting items. But that uses the logical spawns, we'd have to modify the Root logic to start in Link's House to ensure this, if we wanted to do something similar without putting restrictions on where the Link's House exit goes.

r0bd0g commented 3 years ago

In vanilla, saving in Link's House as adult spawns you in Link's House on savewarp, yeah. It's not exactly well known behaviour, but people expecting it to work normally will be surprised to learn that it does not. I don't know if it would happen as child in vanilla since the spawn normally goes to Link's House... Honestly it definitely was intentional that this savewarp to Link's House was removed in random spawns. Maybe the "solution" is just to document this behaviour change in the random spawns tooltip.

fenhl commented 2 years ago

The change is made here: https://github.com/TestRunnerSRL/OoT-Randomizer/blob/84696bf88642e02418704f7b9535a483a8e2edae/Patches.py#L881-L883

It seems a bit arbitrary that this patch is made when spawns are shuffled, but not in overworld ER or full indoors. I can't think of any softlocks this prevents in any case.

Zannick commented 2 years ago

I think this has to do with the guarantees we get about Link's House as child when spawn_positions is off, I think that includes access to ToT in some form. Is there a way that ER without spawn_positions can produce a seed where only child can go from Link's House -> ToT? Eg. if we put the ToT Entrance from one of the child-only Zora's Domain <-> Lake Hylia shortcut and enclose the other exits.

I can't think of a logical benefit from savewarping in Link's House to Link's House, but I guess it can provide some gameplay benefits like health and drop resets.

Either we need to confirm what settings require us to have adult savewarping out of Link's House, or we need to adjust the entrance shuffle to require an adult path from KF Links House to ToT with no items.

r0bd0g commented 2 years ago

I've tried it before, b/c I wanted to scum something and return to link's house. If link's house were to connect only to other places you can't savewarp to spawn, then it'd be a problem that saving there brings you to there. I don't know if decoupled is even capable of this. (I'm also not 100% convinced that only checking for shuffled spawns is enough to prevent this from being a problem, if it is possible.) It's an annoying thing to have to think about. Regardless, decoupled isn't on main branch...

(You would only need a path from Link's House to a place where saving would bring you to spawn, with no items, if you really want to add that check.)

fenhl commented 2 years ago

Is there a way that ER without spawn_positions can produce a seed where only child can go from Link's House -> ToT?

I don't think this is possible even with spawn_positions, since you can always just leave Link's house and savewarp from there.

fenhl commented 7 months ago

It looks like this behavior was introduced in #1124. @Roman971 do you remember what the rationale for introducing this change was?