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

Blasphemous: Randomizer 2.0 #1883

Merged
merged 48 commits into from
Jul 6, 2023
Merged

Blasphemous: Randomizer 2.0 #1883

merged 48 commits into from
Jul 6, 2023

Conversation

TRPG0
Copy link
Collaborator

@TRPG0 TRPG0 commented Jun 21, 2023

@BrandenEK and I have been working on getting the world for Blasphemous updated to work with Randomizer 2.0. Here is a full list of changes and new features:

  • All logic is now consistent with standalone randomizer up to it's most recent version (currently 2.0.6)
  • Many options have been changed and/or removed to be consistent with standalone randomizer.
    • expert_logic option has been removed. difficulty now affects both the number of upgrades required for boss fights, and whether or not the randomizer expects the player to know certain tricks/glitches
    • Several options that would shuffle a specific group of items into the item pool have been removed in favor of the new option skip_long_quests, which excludes the following locations, ensuring that they will not have important items: "Albero: Donate 50000 Tears", "Ossuary: 11th reward", "AtTotS: Miriam's gift", "TSC: Jocinero's final reward"
  • The abilities to dash and climb walls can now be randomized.
  • You can now choose to start from 1 of 7 locations: Brotherhood of the Silent Sorrow, Albero, Convent of Our Lady of the Charred Visage, Grievance Ascends, Knot of the Three Words, Archcathedral Rooftops, and Mourning and Havoc
    • Some starting locations cannot be chosen with certain other options. Specifically, Brotherhood of the Silent Sorrow and Mourning and Havoc cannot be chosen if Shuffle Dash is enabled, Mourning and Havoc cannot be chosen if Difficulty is less than Hard, and Grievance Ascends cannot be chosen if Shuffle Wall Climb is enabled.
  • Two custom items can be added to the item pool, both of which adding an additional item and location to the game.
    • Boots of Pleading: Allows the player to fall into spikes and take damage rather than dying instantly.
    • Purified Hand of the Nun: Allows the player to jump again in midair.
    • If either of these custom items are enabled, the client will refuse to let the player begin a save file if the respective mods are not installed.

Notably, we decided to cut Door Randomizer from AP for the time being. We agreed that it was more important to worry about it later and focus on getting the rest of the new features to work instead, so that people don't have to downgrade versions to play Multiworld anymore.

TRPG0 and others added 27 commits April 20, 2023 23:10
I think it doesn't fail tests anymore...? Please?
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.

I would look at at least changing some of the if-elif chains to dictionary lookups, other than that I'm happy with this. Didn't have have time to do any test gens

worlds/blasphemous/Rules.py Outdated Show resolved Hide resolved
worlds/blasphemous/Rules.py Outdated Show resolved Hide resolved
worlds/blasphemous/Rules.py Outdated Show resolved Hide resolved
worlds/blasphemous/Rules.py Outdated Show resolved Hide resolved
worlds/blasphemous/__init__.py Outdated Show resolved Hide resolved
@NewSoupVi
Copy link
Member

Oh, also, overall, I think the improvements you made to options are great. And in general, I could tell that you put a lot of thought into all of this :) Most of my complaints come from unwieldy if-elif chains and enourmous logical expressions in rules.py, everything else seems great

@TRPG0
Copy link
Collaborator Author

TRPG0 commented Jun 28, 2023

I have no idea why The Messenger's TestShop.py is suddenly failing on ubuntu 3.10. I didn't touch that

@ThePhar
Copy link
Member

ThePhar commented Jun 28, 2023

I have no idea why The Messenger's TestShop.py is suddenly failing on ubuntu 3.10. I didn't touch that

I suspect one (or more) of the tests has a small % chance to fail. I pinged alwaysintreble on it so they can look.

@TRPG0
Copy link
Collaborator Author

TRPG0 commented Jun 28, 2023

Well I updated my branch and it passed all the tests after that, so idk. It is strange that it only failed that one test though.

@NewSoupVi
Copy link
Member

Added another comment to one of the threads above, idk if you would notice that if it's marked as "resolved". I think it's valuable so I don't want it to go unnoticed :D

@TRPG0
Copy link
Collaborator Author

TRPG0 commented Jun 30, 2023

I took your advice. It's definitely a lot nicer to look at now

Copy link
Member

@ThePhar ThePhar left a comment

Choose a reason for hiding this comment

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

In addition to the below, I saw you changed the relative imports to world.<...>, I haven't tested the APWorld compatibility, but if you can confirm it works as an .apworld, can you also edit setup.py to remove "Blasphemous" from non_apworlds so it can output as an apworld during setup build?

worlds/blasphemous/docs/setup_en.md Show resolved Hide resolved
worlds/blasphemous/docs/setup_en.md Show resolved Hide resolved
worlds/blasphemous/__init__.py Show resolved Hide resolved
worlds/blasphemous/__init__.py Outdated Show resolved Hide resolved
worlds/blasphemous/__init__.py Show resolved Hide resolved
worlds/blasphemous/Options.py Outdated Show resolved Hide resolved
worlds/blasphemous/Rules.py Show resolved Hide resolved
@TRPG0
Copy link
Collaborator Author

TRPG0 commented Jul 2, 2023

Yeah it works as an APWorld, people have been playing it on their own already. And now that it doesn't use LogicMixin anymore it will work on < 3.10 too.

@ThePhar
Copy link
Member

ThePhar commented Jul 6, 2023

Running into the following error on this PR (with main merged on top) with the following yaml:
Blasphemous.txt

Archipelago (0.4.2) logging initialized on Windows-10-10.0.22621-SP0 running Python 3.11.4
P1 Weights: Blasphemous.yaml >> Default Blasphemous Template
Generating for 1 player, 25880601466213338833 Seed 44503584750128235167 with plando: bosses
Archipelago Version 0.4.2  -  Seed: 44503584750128235167

Found 49 World Types:
 Adventure                   :   15 Items (IDs: 118000000 - 118000262) |   24 Locations (IDs: 118000004 - 118000210)
 A Link to the Past          :  144 Items (IDs:         2 -       180) |  287 Locations (IDs:     59758 -   4194341)
 Blasphemous                 :  204 Items (IDs:   1909000 -   1909203) |  306 Locations (IDs:   1909000 -   1909305)
 Bumper Stickers             :   12 Items (IDs:    595000 -    595011) |  100 Locations (IDs:    595000 -    595099)
 ChecksFinder                :    3 Items (IDs:     80000 -     80002) |   25 Locations (IDs:     81000 -     81024)
 Clique                      :    2 Items (IDs:  69696968 -  69696969) |    2 Locations (IDs:  69696968 -  69696969)
 Dark Souls III              : 1096 Items (IDs:    100000 -    101096) |  890 Locations (IDs:    100000 -    102690)
 Donkey Kong Country 3       :    8 Items (IDs:  14430208 -  14430215) |  230 Locations (IDs:  14430208 -  14430618)
 DLCQuest                    :   47 Items (IDs:    120000 -    120046) | 1773 Locations (IDs:    120000 -    121772)
 DOOM 1993                   :  118 Items (IDs:    350000 -    350117) |  348 Locations (IDs:    351000 -    351347)
 Factorio                    :  227 Items (IDs:    131065 -    131292) | 1785 Locations (IDs:    131072 -    132856)
 Final Fantasy               :  194 Items (IDs:       256 -       500) |  255 Locations (IDs:       257 -       767)
 Hollow Knight               :  249 Items (IDs:  16777216 -  16777464) |  740 Locations (IDs:  16777216 -  16777955)
 Hylics 2                    :   70 Items (IDs:    200622 -    200692) |  164 Locations (IDs:    200622 -    200785)
 Kingdom Hearts 2            :  285 Items (IDs:   1245184 -   1245468) |  727 Locations (IDs:   1245184 -   1245915)
 Links Awakening DX          :  117 Items (IDs:  10000000 -  10000164) |  255 Locations (IDs:  10000000 -  10003673)
 Lufia II Ancient Cave       :  415 Items (IDs:  11272193 -  11304994) |  123 Locations (IDs:  11272192 -  11273124)
 Meritous                    :   23 Items (IDs:    593000 -    593022) |  104 Locations (IDs:    593000 -    593103)
 The Messenger               :   62 Items (IDs:  11390976 -  11391037) |  136 Locations (IDs:  11390976 -  11391111)
 Minecraft                   :   47 Items (IDs:     45000 -     45100) |  114 Locations (IDs:     42000 -     42113)
 MegaMan Battle Network 3    :  222 Items (IDs:  11735040 -  11735263) |  261 Locations (IDs:  11735040 -  11735309)
 Muse Dash                   :  532 Items (IDs:   2900000 -   2900571) | 1044 Locations (IDs:   2900000 -   2901043)
 Noita                       :   32 Items (IDs:    110000 -    110031) |  629 Locations (IDs:    110000 -    110668)
 Ocarina of Time             :  143 Items (IDs:     66001 -     66211) | 1623 Locations (IDs:     67010 -     68705)
 Overcooked! 2               :   45 Items (IDs:    213701 -    213745) |   43 Locations (IDs:         1 -        44)
 Pokemon Red and Blue        :  195 Items (IDs: 172000001 - 172000506) |  700 Locations (IDs: 172000000 - 172000699)
 Raft                        :  325 Items (IDs:     47001 -     47325) |  154 Locations (IDs:     48001 -     48155)
 Rogue Legacy                :   60 Items (IDs:     90000 -     90097) |  584 Locations (IDs:     91000 -     92259)
 Risk of Rain 2              :   37 Items (IDs:     37001 -     37747) |  910 Locations (IDs:     38000 -     40361)
 Sonic Adventure 2 Battle    :   54 Items (IDs:  16711680 -  16711760) | 1149 Locations (IDs:  16711680 -  16715130)
 Starcraft 2 Wings of Liberty:  111 Items (IDs:      1000 -      1802) |  123 Locations (IDs:      1100 -      3805)
 Super Metroid               :   24 Items (IDs:     83000 -     83023) |  101 Locations (IDs:     82000 -     82170)
 Super Mario 64              :   18 Items (IDs:   3626000 -   3626214) |  164 Locations (IDs:   3626000 -   3626243)
 Super Mario World           :   22 Items (IDs:  12320768 -  12320790) |  158 Locations (IDs:  12320768 -  12321281)
 SMZ3                        :  151 Items (IDs:     84000 -     84223) |  316 Locations (IDs:     85000 -     85510)
 Secret of Evermore          :  156 Items (IDs:     64000 -     64904) |  339 Locations (IDs:     64000 -     64385)
 Slay the Spire              :    4 Items (IDs:      8000 -      8003) |   31 Locations (IDs:     19001 -     22003)
 Stardew Valley              :  390 Items (IDs:    717000 -    722201) |  909 Locations (IDs:    717001 -    718728)
 Subnautica                  :  104 Items (IDs:     35000 -     35213) |  181 Locations (IDs:     33000 -     34049)
 Timespinner                 :  189 Items (IDs:   1337000 -   1337249) |  212 Locations (IDs:   1337000 -   1337249)
 The Legend of Zelda         :   33 Items (IDs:      7100 -      7132) |  155 Locations (IDs:      7000 -      7154)
 Undertale                   :   85 Items (IDs:     77000 -     77999) |  122 Locations (IDs:     79001 -     79920)
 VVVVVV                      :   20 Items (IDs:   2515000 -   2515019) |   20 Locations (IDs:   2515000 -   2515019)
 Wargroove                   :   31 Items (IDs:     52000 -     52030) |   38 Locations (IDs:     53001 -     53038)
 The Witness                 :  187 Items (IDs:    158000 -    159987) |  755 Locations (IDs:    158000 -    159800)
 Zillion                     :   12 Items (IDs:   8675309 -   8675320) | 1555 Locations (IDs:   8675309 -   8676863)

Creating World.
Creating Items.
Calculating Access Rules.
Running Item Plando
Uncaught exception
Traceback (most recent call last):
  File "C:\Users\Phar\PycharmProjects\archipelago\Generate.py", line 646, in <module>
    main()
  File "C:\Users\Phar\PycharmProjects\archipelago\Generate.py", line 227, in main
    callback(erargs, seed)
  File "C:\Users\Phar\PycharmProjects\archipelago\Main.py", line 265, in main
    distribute_planned(world)
  File "C:\Users\Phar\PycharmProjects\archipelago\Fill.py", line 743, in distribute_planned
    swept_state.sweep_for_events()
  File "C:\Users\Phar\PycharmProjects\archipelago\BaseClasses.py", line 727, in sweep_for_events
    reachable_events = {location for location in locations if location.can_reach(self)}
                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\Phar\PycharmProjects\archipelago\BaseClasses.py", line 727, in <setcomp>
    reachable_events = {location for location in locations if location.can_reach(self)}
                                                              ^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\Phar\PycharmProjects\archipelago\BaseClasses.py", line 940, in can_reach
    return self.access_rule(state) and self.parent_region.can_reach(state)
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\Phar\PycharmProjects\archipelago\worlds\blasphemous\Rules.py", line 2055, in <lambda>
    lambda state: broke_jondo_bell_e(state, logic, enemy, player))
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\Phar\PycharmProjects\archipelago\worlds\blasphemous\Rules.py", line 227, in broke_jondo_bell_e
    or can_enemy_bounce(state, logic, enemy)
       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: can_enemy_bounce() takes 2 positional arguments but 3 were given

@TRPG0
Copy link
Collaborator Author

TRPG0 commented Jul 6, 2023

Whoops. Fixed it

Copy link
Member

@ThePhar ThePhar left a comment

Choose a reason for hiding this comment

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

Should be fine. Playthrough spoiler looks a bit ugly, but that should be resolved by #1925 (out of scope for this PR) and is very minor. Confirms works as an apworld on 3.11.

@ThePhar ThePhar merged commit 1338d7a into ArchipelagoMW:main Jul 6, 2023
14 checks passed
@TRPG0 TRPG0 deleted the blasphemous branch September 10, 2023 17:57
@TRPG0 TRPG0 restored the blasphemous branch September 10, 2023 17:59
FlySniper pushed a commit to FlySniper/Archipelago that referenced this pull request Nov 14, 2023
Co-authored-by: Fabian Dill <Berserker66@users.noreply.github.com>
Jouramie pushed a commit to Jouramie/Archipelago that referenced this pull request Feb 28, 2024
Co-authored-by: Fabian Dill <Berserker66@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.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

4 participants