ArchipelagoMW / Archipelago

Archipelago Multi-Game Randomizer and Server
https://archipelago.gg
Other
481 stars 638 forks source link

Shivers: Add events and fix require puzzle hints logic #4018

Open korydondzila opened 5 days ago

korydondzila commented 5 days ago

What is this fixing or adding?

Adds events to help clean up some logic and fixes require puzzle hints so that entrances are also accounted for and adds missing logic. Also just some general cleanup.

How was this tested?

Ran multiple generations to make sure nothing failed and played a few games solo and with others, including GodlFire the existing world maintainer, to make sure the logic was correct.

New Maintainer

I have made a few small prior changes to Shivers AP code. https://github.com/ArchipelagoMW/Archipelago/pull/2690 https://github.com/ArchipelagoMW/Archipelago/pull/2869 https://github.com/ArchipelagoMW/Archipelago/pull/3558 https://github.com/ArchipelagoMW/Archipelago/pull/3854

Though I have primarily been a maintainer for the Shivers client. https://github.com/GodlFire/Shivers-Randomizer-CSharp/pulls?q=is%3Apr+author%3Akorydondzila+

I was asked by GodlFire to figure out how to get events working so that redundancy could be removed and logic improved. Also to remove the pot duplicates from the item pool so they don't show up in the advanced options. (these items are solely used to indicate where each pot goes when received but are important for progression)

Exempt-Medic commented 5 days ago

To quote the docs regarding adding a world maintainer:

To help the core team review the change, information about the new maintainer and their contributions should be included in the PR description.

korydondzila commented 5 days ago

@Exempt-Medic thanks for pointing that out, added more info.

Exempt-Medic commented 2 days ago

This is out-of-scope, but I think it would make sense to eventually convert the item_table or at least create smaller tables for the item types so that something like:

[self.create_item(name) for name, data in item_table.items() if data.type == ItemType.POT]

Could be:

[self.create_item(name) for name in pot_item_table]
korydondzila commented 2 days ago

This is out-of-scope, but I think it would make sense to eventually convert the item_table or at least create smaller tables for the item types so that something like:

[self.create_item(name) for name, data in item_table.items() if data.type == ItemType.POT]

Could be:

[self.create_item(name) for name in pot_item_table]

Yep