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

KDL3: Version 2.0.0 #3323

Merged
merged 110 commits into from
Aug 31, 2024
Merged

Conversation

Silvris
Copy link
Collaborator

@Silvris Silvris commented May 18, 2024

What is this fixing or adding?

Major overhaul/cleanup of the KDL3 world.

Features:

  • Now using APPP, supporting generation without the need for a rom
  • Now has local items by default, with an option to enable remote items
  • More varied filler item generation
  • Trap percentage now applies to the entire filler pool, not just filler created from non-required Heart Stars
  • Now supports a maximum of 99 Heart Stars per world
  • Added option groups
  • Added Miku Kirby flavor

Fixes:

  • Typing cleanup across the entire world, including some cases where the variables were incorrect types
  • Fixed an issue with prior restrictive ability fill on Ripple Field 5, where Burning is not actually a valid option for the fill
  • Fixed an issue where 2 animals could appear in the same room, and if ridden could crash the game.
  • Fixed Custom Kirby/Gooey Flavor not having display names
  • Fixed the All Random preset not including random starsanity
  • Fixed two animal locations in Iceberg 4 not having access rules
  • Fixed a bug where if Kirby died while Gooey was alive and a Gooey Bag was primed, the game would crash
  • Fixed a test that would not run correctly
  • Fixed an issue where Boss Shuffle would be nonfunctional if Stage Shuffle was disabled

How was this tested?

Minimally, most changes have been tested manually via test generations and client testing, but not a full playthrough.
Ran unittests.

If this makes graphical changes, please attach screenshots.

Silvris and others added 30 commits July 21, 2023 16:56
load default procedure for version 5 patches
add args for procedure
add default extension for tokens and bsdiff
allow specifying additional required extensions for generation
define interface that has only the bare minimum required
@NewSoupVi
Copy link
Member

There are conflicts & I think agilbert1412 makes good points that should at the very least be addressed (i.e. commented on), so I'm putting this on waiting on author

@NewSoupVi NewSoupVi added the waiting-on: author Issue/PR is waiting for feedback or changes from its author. label Jul 25, 2024
@NewSoupVi NewSoupVi removed the waiting-on: author Issue/PR is waiting for feedback or changes from its author. label Jul 25, 2024
Copy link
Member

@NewSoupVi NewSoupVi left a comment

Choose a reason for hiding this comment

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

Code looks good, unit tests give me confidence

As said on Discord, I would like some sort of playtesting to happen before I click merge because a lot of changes are rom stuff (so I'm gonna do "Request changes")

@TheLX5
Copy link
Contributor

TheLX5 commented Jul 25, 2024

Not an official play test but my friend group has played this content update for a while now every now and then in our weekly sessions and we can confirm that most of the changes and additions work fine (we didn't test everything as our sessions were made with options we're comfortable with instead of playing for testing).

Can vouch for proper APPP usage as I'm using this world as a base for my own worlds which has been working nicely and matches the usage seen in other merged worlds as well (MLSS).

@TheLX5
Copy link
Contributor

TheLX5 commented Aug 17, 2024

Using the pattern option in stage_shuffle breaks generation, tested on the latest commit.

Exception in <bound method create_levels of <worlds.kdl3.KDL3World object at 0x0000021213DCE9D0>> for player 1, named Player1.
Traceback (most recent call last):
  File "A:\Archipelago\generate.py", line 551, in <module>
    multiworld = ERmain(erargs, seed)
                 ^^^^^^^^^^^^^^^^^^^^
  File "A:\Archipelago\Main.py", line 110, in main
    AutoWorld.call_all(multiworld, "create_regions")
  File "A:\Archipelago\worlds\AutoWorld.py", line 181, in call_all
    call_single(multiworld, method_name, player, *args)
  File "A:\Archipelago\worlds\AutoWorld.py", line 171, in call_single
    raise e
  File "A:\Archipelago\worlds\AutoWorld.py", line 164, in call_single
    ret = _timed_call(method, *args, multiworld=multiworld, player=player)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "A:\Archipelago\worlds\AutoWorld.py", line 150, in _timed_call
    ret = method(*args)
          ^^^^^^^^^^^^^
  File "A:\Archipelago\worlds\kdl3\regions.py", line 235, in create_levels
    world.player_levels = generate_valid_levels(world, level_shuffle)
                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "A:\Archipelago\worlds\kdl3\regions.py", line 159, in generate_valid_levels
    raise Exception(
Exception: Failed to find valid stage for 5-5. Remaining Stages:[7798788]
Exception in <bound method create_levels of <worlds.kdl3.KDL3World object at 0x0000021213DCE9D0>> for player 1, named Player1.

@Exempt-Medic Exempt-Medic added the waiting-on: author Issue/PR is waiting for feedback or changes from its author. label Aug 18, 2024
@NewSoupVi NewSoupVi removed the waiting-on: author Issue/PR is waiting for feedback or changes from its author. label Aug 19, 2024
@NewSoupVi NewSoupVi merged commit 920cffd into ArchipelagoMW:main Aug 31, 2024
17 checks passed
AustinSumigray pushed a commit to AustinSumigray/Archipelago that referenced this pull request Jan 4, 2025
* initial work on procedure patch

* more flexibility

load default procedure for version 5 patches
add args for procedure
add default extension for tokens and bsdiff
allow specifying additional required extensions for generation

* pushing current changes to go fix tloz bug

* move tokens into a separate inheritable class

* forgot the commit to remove token from ProcedurePatch

* further cleaning from bad commit

* start on docstrings

* further work on docstrings and typing

* improve docstrings

* fix incorrect docstring

* cleanup

* clean defaults and docstring

* define interface that has only the bare minimum required
for `Patch.create_rom_file`

* change to dictionary.get

* remove unnecessary if statement

* update to explicitly check for procedure, restore compatible version and manual override

* Update Files.py

* remove struct uses

* Update Rom.py

* convert KDL3 to APPP

* change class variables to instance variables

* Update worlds/Files.py

Co-authored-by: black-sliver <59490463+black-sliver@users.noreply.github.com>

* Update worlds/Files.py

Co-authored-by: black-sliver <59490463+black-sliver@users.noreply.github.com>

* move required_extensions to tuple

* fix missing tuple ellipsis

* fix classvar mixup

* rename tokens to _tokens. use hasattr

* type hint cleanup

* Update Files.py

* initial base for local items, need to finish

* coo not clean

* handle local items for real, appp cleanup

* actually make bosses send their locations

* fix cloudy park 4 rule, zero deathlink message

* remove redundant door_shuffle bool

when generic ER gets in, this whole function gets rewritten. So just clean it a little now.

* properly fix deathlink messages, fix fill error

* update docs

* add prefill items

* fix kine fill error

* Update Rom.py

* Update Files.py

* mypy and softlock fix

* Update Gifting.py

* mypy phase 1

* fix rare async client bug

* Update __init__.py

* typing cleanup

* fix stone softlock

because of the way Kine's Stone works, you can't clear the stone blocks before clearing the burning blocks, so we have to bring Burning from outside

* Update Rom.py

* Add option groups

* Rename to lowercase

* finish rename

* whoops broke the world

* fix animal duplication bug

* overhaul filler generation

* add Miku flavor

* Update gifting.py

* fix issues related to max_hs increase

* Update test_locations.py

* fix boss shuffle not working if level shuffle is disabled

* fix bleeding default levels

* Update options.py

* thought this would print seed

* yay bad merges

* forgot options too

* yeah lets just break generation while at it

* this is probably a problem

* cap required heart stars

* Revert "cap required heart stars"

This reverts commit 759efd3.

* fix duplication removal placement, deprecated test option

* forgot that we need to account for what we place

* move location ids

* rewrite trap handling

* further stage renumber fixes

* forgot one more

* basic UT support

* fix local heart star checks

* fix pattern

---------

Co-authored-by: beauxq <beauxq@yahoo.com>
Co-authored-by: black-sliver <59490463+black-sliver@users.noreply.github.com>
Co-authored-by: NewSoupVi <57900059+NewSoupVi@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
is: enhancement Issues requesting new features or pull requests implementing new features. waiting-on: core-review Issue/PR has been peer-reviewed and is ready to be merged or needs input from a core maintainer.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

7 participants