Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

LADX: Implement Collect on checks #1902

Open
wants to merge 1,794 commits into
base: main
Choose a base branch
from

Conversation

AustinSumigray
Copy link

What is this fixing or adding?

Adds check collection to LADX, allowing the server to inform of collected checks and then in-game modifying the memory to indicate this, removing items, opening chests, etc.

How was this tested?

I've tried a variety of checks and then loading saves in various states of completion, making sure that local items are not collected to prevent soft locking.

If this makes graphical changes, please attach screenshots.

No graphical changes made.

@ThePhar ThePhar added the is: enhancement Issues requesting new features or pull requests implementing new features. label Jun 27, 2023
@ThePhar
Copy link
Member

ThePhar commented Jun 27, 2023

@zig-for

@zig-for
Copy link
Collaborator

zig-for commented Jun 27, 2023

This overall looks good. Test it out on a couple of games, but as long as it looks good from the AP side I see nothing wrong. Will try to look again next week to spot any sneakier issues.

Copy link
Collaborator

@t3hf1gm3nt t3hf1gm3nt left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

finally. been wanting something like this for LADX. one request though and unsure how much of a pain it will be to implement: adding some sort of toggle somewhere to allow this behavior or have it not happen. while i and others like you want collects to affect the in game state, i know there will be others who do not want this. so allowing a toggle, i would think preferably through the client, but could be a yaml option like in LTTP, would be the best of both worlds.

@AustinSumigray
Copy link
Author

I added an optional behavior, and filled out the blacklist. Saw some strange behavior, where if an owl statue is on the same address as a location check, the location check would be collected properly, and the check would not appear in-game (or the chest if it was a chest would appear opened) but the tracker wouldn't correctly say it was collected. If I can find a solution for this (or somebody knows one) it would be good to fix, but 90% of locations beind collected is better than none.

@AustinSumigray
Copy link
Author

Solved that glitch, so now all the remaining blacklist items have a purpose.

@zig-for
Copy link
Collaborator

zig-for commented Jun 29, 2023 via email

@AustinSumigray
Copy link
Author

If you didn’t already, worth putting comments why each item is there in the black list Sent from my iPhoneOn Jun 28, 2023, at 8:41 AM, AustinSumigray @.> wrote: Solved that glitch, so now all the remaining blacklist items have a purpose. —Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you were mentioned.Message ID: @.>

Added.

@ThePhar
Copy link
Member

ThePhar commented Jul 22, 2023

image

@zig-for
Copy link
Collaborator

zig-for commented Aug 11, 2023

Bump. It would be neat if this wasn't lost.

@ScipioWright ScipioWright added the waiting-on: author Issue/PR is waiting for feedback or changes from its author. label Feb 27, 2024
@zig-for
Copy link
Collaborator

zig-for commented Mar 26, 2024

Bump :(

@NewSoupVi
Copy link
Member

This PR seems sad and abandoned

But also, I don't know what's going on here, and apart from a tentative approval from the world maintainer, I don't have anything to go off of

If you guys test this PR or people who understand more about rom clients review it, I will absolutely be happy to push this through

@NewSoupVi NewSoupVi added the waiting-on: peer-review Issue/PR has not been reviewed by enough people yet. label Jun 21, 2024
@NewSoupVi
Copy link
Member

Zig is no longer actively maintaining LADX.

I'm still willing to merge LADX PRs, but only with a larger volume of peer reviews.

# It would be neat to reconnect here, but connection needs this loop to be running
logger.info("Detected new ROM, disconnecting...")
await self.disconnect()
continue
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm testing this PR and this continue seems to be a problem when organized this way.

I'm getting: Syntax error 'continue' not properly in a loop

It works for me when I put this block directly into run_game_loop as it was before.

nicholassaylor and others added 13 commits January 4, 2025 16:05
…chipelagoMW#4127)

* Prevent ini files from being included in YAML discovery

* Update Generate.py

Co-authored-by: black-sliver <[email protected]>

---------

Co-authored-by: black-sliver <[email protected]>
…elagoMW#4096)

* Core: The Item Links fix to end them all

This puts the bandaid that was holding Item Links together for years back on.

It's a bad solution
But it's what we had previously, and the change away from this is what broke them

So in the interest of 0.5.1 releasing this century, maybe we should just go with this.

* Update AutoWorld.py
…lute (ArchipelagoMW#4113)

* Pokemon Emerald: Prevent evolution fanfare from being replaced with flute

* Pokemon Emerald: Update Changelog
* edit checksfinder description

* Remove trailing whitespace in docstring

---------

Co-authored-by: NewSoupVi <[email protected]>
…elagoMW#3893)

* Rogue Legacy: Remove item/location id overlap rejection code.

RL has been updated to support id overlaps.

* Update __init__.py

---------

Co-authored-by: NewSoupVi <[email protected]>
NewSoupVi and others added 23 commits January 4, 2025 16:06
… + useful (ArchipelagoMW#3925)

* Core: Reword item classification definitions to allow for progression + useful

* Update network protocol.md

* Update world api.md

* Update Fill.py

* Docstrings

* Update BaseClasses.py

* Update advanced_settings_en.md

* Update advanced_settings_en.md

* Update advanced_settings_en.md

* space
…s excluded locations (ArchipelagoMW#3738)

* Give the option to worlds to have a remaining fill that respects excluded

* comment
…t data (ArchipelagoMW#3583)

* This feature is just broken lol

* simplify

* mypy

* Expand the unit test for forbidden doors
* Initial implementation of Generic ER

* Move ERType to Entrance.Type, fix typing imports

* updates based on testing (read: flailing)

* Updates from feedback

* Various bug fixes in ERCollectionState

* Use deque instead of queue.Queue

* Allow partial entrances in collection state earlier, doc improvements

* Prevent early loops in region graph, improve reusability of ER stage code

* Typos, grammar, PEP8, and style "fixes"

* use RuntimeError instead of bare Exceptions

* return tuples from connect since it's slightly faster for our purposes

* move the shuffle to the beginning of find_pairing

* do er_state placements within pairing lookups to remove code duplication

* requested adjustments

* Add some temporary performance logging

* Use CollectionState to track available exits and placed regions

* Add a method to automatically disconnect entrances in a coupled-compliant way

 Update docs and cleanup todos

* Make find_placeable_exits deterministic by sorting blocked_connections set

* Move EntranceType out of Entrance

* Handle minimal accessibility, autodetect regions, and improvements to disconnect

* Add on_connect callback to react to succeeded entrance placements

* Relax island-prevention constraints after a successful run on minimal accessibility; better error message on failure

* First set of unit tests for generic ER

* Change on_connect to send lists, add unit tests for EntranceLookup

* Fix duplicated location names in tests

* Update tests after merge

* Address review feedback, start docs with diagrams

* Fix rendering of hidden nodes in ER doc

* Move most docstring content into a docs article

* Clarify when randomize_entrances can be called safely

* Address review feedback

* Apply suggestions from code review

Co-authored-by: Aaron Wagener <[email protected]>

* Docs on ERPlacementState, add coupled/uncoupled handling to deadend detection

* Documentation clarifications

* Update groups to allow any hashable

* Restrict groups from hashable to int

* Implement speculative sweeping in stage 1, address misc review comments

* Clean unused imports in BaseClasses.py

* Restrictive region/speculative sweep test

* sweep_for_events->advancement

* Remove redundant __str__

Co-authored-by: Doug Hoskisson <[email protected]>

* Allow partial entrances in auto indirect condition sweep

* Treat regions needed for logic as non-dead-end regardless of if they have exits, flip order of stage 3 and 4 to ensure there are enough exits for the dead ends

* Typing fixes suggested by mypy

* Remove erroneous newline 

Not sure why the merge conflict editor is different and worse than the normal editor. Crazy

* Use modern typing for ER

* Enforce the use of explicit indirect conditions

* Improve doc on required indirect conditions

---------

Co-authored-by: qwint <[email protected]>
Co-authored-by: alwaysintreble <[email protected]>
Co-authored-by: Doug Hoskisson <[email protected]>
…#4018)

* Adds some events, renames things, fails for many players.

* Adds entrance rules for requires hints.

* Cleanup and add goal item.

* Cleanup.

* Add additional rule.

* Event and regions additions.

* Updates from merge.

* Adds collect behavior option.

* Fix missing generator location.

* Fix whitespace and optimize imports.

* Switch location order back.

* Add name replacement for storage.

* Fix test failure.

* Improve puzzle hints required.

* Add missing locations and cleanup indirect conditions.

* Fix naming.

* PR feedback.

* Missed comment.

* Cleanup imports, use strings for option equivalence, and update option description.

* Fix rule.

* Create rolling buffer goal items and remove goal items and location from default options.

* Cleanup.

* Removes dateutil.

* Fixes Subterranean World information plaque.
…zation. (ArchipelagoMW#4396)

This allows for example, making a blueprint of your rocket silo with requester chests specifying a request for the 2-8 rocket part ingredients needed to build the rocket.
…chipelagoMW#3895)

* Fix location order

* Update worlds/witness/data/static_logic.py

Co-authored-by: Exempt-Medic <[email protected]>

---------

Co-authored-by: Exempt-Medic <[email protected]>
…worlds (ArchipelagoMW#4428)

Option resolution for the `StartingLocation` option (the only
`ChoiceIsRandom` subclass) was writing to the `randomized` attribute on
the class instead of on the instance, meaning that
`self.options.starting_location.randomized` would be `True` for all
Blasphemous players in the multiworld if any one of the players set
their `StartingLocation` option to `"random"`.

This patch fixes the issue by writing to the `randomized` attribute on
the new instance instead of on the class.
@github-actions github-actions bot added affects: core Issues/PRs that touch core and may need additional validation. affects: webhost Issues/PRs that touch webhost and may need additional validation. labels Jan 4, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
affects: core Issues/PRs that touch core and may need additional validation. affects: webhost Issues/PRs that touch webhost and may need additional validation. is: enhancement Issues requesting new features or pull requests implementing new features. waiting-on: author Issue/PR is waiting for feedback or changes from its author. waiting-on: peer-review Issue/PR has not been reviewed by enough people yet.
Projects
None yet
Development

Successfully merging this pull request may close these issues.