TalicZealot / SotnRandoTools

A collection of tools to enhance the SotN randomizer experience.
https://taliczealot.github.io/
MIT License
24 stars 6 forks source link

Can we please have Aperture added into the tracker? #36

Closed eldri7ch closed 1 year ago

eldri7ch commented 1 year ago

I am attaching the JSON for Aperture, which significantly changes the logic of the castle. There are some issues where the tracker, because it assumes no changes to the tile maps of the castle are happening, says that certain checks are our of logic when, in fact, they are not even accessible at all.

Example: There is a Jewel of Open door at Skill of Wolf. The tracker reads the file and sees that Jewel of Open is required in logic but "knows" that Skill of Wolf can be accessed with only Gravity Boots. If a player has Gravity Boots, the tracker marks the check as an 'out of logic' check because the logic of the JSON doesn't 100% match the vanilla layout of the castle.

I don't expect the tracker to be able to read tile and entity edits directly from the JSON, so if asking for the Out of Logic issue to be resolved is beyond reason, I don't mind. I would settle for just having the JSON distributed with the tracker, in the Presets folder.

image

aperture.json

TalicZealot commented 1 year ago

The tracker makes no assumptions other than reading locks, so this must be a bug. Will look into it.

TalicZealot commented 1 year ago

Since at this point this is a straight up romhack not just a randomizer I can't dynamically generate out of logic locks or it will break something like Force of Echo. I will have to turn off ool display for non-native presets. Unless you encode that into the preset with another array. I guess I can support both options. Native presets will use Speedrun as a base for ool checks, non native presets will clear ool and accept an optional array with the key "lockLocationAllowed".

eldri7ch commented 1 year ago

Are we talking about something like this?

{ "location": "Ghost Card", "comment": "Requires flight", "locks": [ "Soul of Bat", "Gravity Boots + Leap Stone", "Form of Mist + Power of Mist" ], "lockLocationAllowed": [ "Leap Stone" ] }

Where the "out of logic" possibility is provided outright? If so, I can definitely provide that. The only assurance we need is that something like this demonstrate that layer zero be accepted as something similar to this:

, { "location": "Mormegil", "comment": "Require's at least Leap Stone", "locks": [ "Leap Stone", "Gravity Boots", "Soul of Bat", "Form of Mist + Power of Mist" ], "escapeRequires": [ "Soul of Bat", "Leap Stone", "Gravity Boots", "Form of Mist + Power of Mist" ], "lockLocationAllowed": [

]

}

TalicZealot commented 1 year ago

No no no, exact same thing as the existing lockLocation array, except those locks would be the allowed out-of-logic checks and ignored by the randomizer.

eldri7ch commented 1 year ago

OK, so a separate array that is ignored by the randomizer and identifies what the out of logic for each check would be. That's a great idea.

TalicZealot commented 1 year ago

Yes. The way I do allowed checks is by simply parsing the speedrun preset, which works for all non-romhacky presets. In fact that's why speedrun contains all locations even though it uses guarded.

eldri7ch commented 1 year ago

Let me throw something together and I'll attach the new file.

eldri7ch commented 1 year ago

If the minimum requirement for the check means that there is no out-of-logic, do I just leave the logic the same as in the "lockLocation" list?

TalicZealot commented 1 year ago

I would leave it blank, but it would have the same effect.

eldri7ch commented 1 year ago

aperture.json

This has the "lockLocationAllowed" section at the bottom. It should be noted that Granfaloon is out of logic with 0 relics in this preset. I left the requirements that were HARD required for each new check where they are in the normal list in case that helps.

TalicZealot commented 1 year ago

Can you send over a ppf so that I can do some testing.

eldri7ch commented 1 year ago

Aperture-PlatinumLeviathan48.zip

TalicZealot commented 1 year ago

Why did you add Holy Glasses to all the allowed checks in 1st castle? Other than that it seems to work as intended.

TalicZealot commented 1 year ago

By the way this branch was meant to be used with open, in my testing it worked fine. https://github.com/TalicZealot/SotN-Randomizer/tree/randomize-starting-location

TalicZealot commented 1 year ago

Added in 1.6.3

eldri7ch commented 1 year ago

Why did you add Holy Glasses to all the allowed checks in 1st castle? Other than that it seems to work as intended.

I might have been hungry and not paid attention. Do I need to send an updated file?

TalicZealot commented 1 year ago

It's live so you can test it locally.

eldri7ch commented 1 year ago

I just loaded a seed and it's pulling the incorrect logic for Demon Card, Leap Stone, Form of Mist, and Merman Statue. They should be in logic at layer 0. Mormegil is out of Logic at Layer 0 and that is correct. image

eldri7ch commented 1 year ago

Would it help if I outright removed new layer 0 checks in the Allowed section?

TalicZealot commented 1 year ago

I would have to see the preset file.

eldri7ch commented 1 year ago

aperture.json

TalicZealot commented 1 year ago

Oh they are missing completely, yes add them to "lockLocation" with an empty lock. Like we discssed here https://github.com/TalicZealot/SotnRandoTools/pull/32#issuecomment-1741826890

eldri7ch commented 1 year ago

They're already added there. image

TalicZealot commented 1 year ago

I see what's going on, gonna patch it.

TalicZealot commented 1 year ago

Ok this should be it this time.

eldri7ch commented 1 year ago

Thanks! Works great!