Commit Graph

146 Commits

Author SHA1 Message Date
Bonta-kun e4fef05d53 Initialize region cache in initialize_regions() and make it a 2d map for more efficient player filtering 2019-12-14 19:19:08 +01:00
Bonta-kun fc9d1b501b Replace keysanity with map/compass/key/bk shuffle 2019-12-13 22:37:52 +01:00
Bonta-kun 6ca08a0fa4 Output rom: put seed and player id/name first in filename 2019-12-12 10:22:54 +01:00
Bonta-kun 25068bcfdd Added an option to pre-open the pyramid hole (aka "fast ganon") 2019-12-12 09:20:32 +01:00
Bonta-kun 55a30aa91f multiworld 2019-12-09 19:27:56 +01:00
Bonta-kun ce19713209 Removed usage of deprecated time.clock() 2019-12-09 13:45:45 +01:00
Kevin Cathcart ab99e8c223 Triforce Hunt turn-in logic 2019-08-28 21:12:44 -04:00
Kevin Cathcart e29f39c585 Mark as pre-release 2019-08-24 15:38:22 -04:00
Kevin Cathcart 990eab4e55 Fix broken retro mode 2019-08-17 15:13:46 -04:00
Kevin Cathcart 0377d6b7bc Finish support for variable crystal requirements
Note: We still do not have anything to reveal required Ganon crystal
counts in inverted mode. For non-inverted it is revealed at a sign on
the pyramid, which might be less than ideal.
2019-08-11 08:55:38 -04:00
Kevin Cathcart 418568df60 Add Item functionality setting and progressive bow
Progressive bows still have issue for silvers hint
2019-08-10 19:37:26 -04:00
Kevin Cathcart 996bf8495c Implement new weapons modes
This also includes some partial additional cleanup of the item pool.
2019-08-10 16:10:54 -04:00
Kevin Cathcart ef7c3d4f06 New Item/Location accessibility options
Replaces existing check_only_beatable, which became the "none" option.

TR can run out of key placement options, with the 100% locations
option, but I really don't care enough. It exists mostly for people who
want to 100% a seed, or to point to if they ask about keys locked behind
themselves.
2019-08-10 16:10:54 -04:00
Kevin Cathcart b0f4fa8cec Partial implementation of many V31 features
Partial support for Progressive bow
  - Still needs to be added to item pool
  - Silver hint handling remains TBD even for VT

Added weapons selection.
  - Vanilla needs to be implemented
  - Assured needs to be implemented
  - Inverted swordless is almost certainly messed up.
  - Swordless standard mode will likely softlock
  - Random weapon standard mode is currently treated as uncle assured

Deleted removed difficulties
  - Remaining difficulties still need to be adjusted

Added locked property to locations:
  - This is used for preplaced items etc so that multiworld balancing
    knows they cannot be moved.

Made a few of the difficulty changes from V31, but not all.

Added required text changes to handle crystals requirements
  - More changes will likely me made in future
  - Currently there is is no way to tell ganon requirement in
    Inverted mode
2019-08-10 16:10:47 -04:00
cassidoxa 18f1275050 Inverted Mode (#5)
Merging in Cassidoxa's inverted mode.

I've still not fully reviewed the logic used in this mode, so it should be considered experimental, pending an in depth review by either myself or AA.
2019-07-27 09:13:13 -04:00
Kevin Cathcart 6d5a0a004d Use a proper multiset for progression items
This can cut generation times in half in some cases
2019-07-13 18:17:16 -04:00
Kevin Cathcart aab696fa9c Remove logic_hash
It is no longer used for anything.
2019-07-11 20:39:08 -04:00
Kevin Cathcart 759c1a5686 Optimize simplified caching system 2019-07-11 20:39:08 -04:00
Kevin Cathcart d6ff27f0a5 Reinstate the state cache system for playthough generation
Fixed the issues in can_beat_game that required me to turn it off.
2019-07-11 20:39:08 -04:00
Bonta-kun 16abf033c3 Enemizer support 2019-07-11 20:39:08 -04:00
Bonta-kun 1a62b1da28 Multiworld core implementation By Bonta0
Does not include the server/client code or the rom writes
specific to it. Indeed it cannot write multiworld roms at
all right now, pending addition future updates to support
the official ALTTPR Multiworld client.

Includes some GUI changes by Alaszun

Co-authored-by: Alaszun <koelze@google.com>
2019-07-11 20:39:08 -04:00
Kevin Cathcart d44d194de7 Switch to simpler caching system
This should speed up generating the seeds the currently take
the longest. Seems to have no impact on the average case.
2019-07-09 20:31:39 -04:00
AmazingAmpharos 3d2ae7d710 Most remaining changes for release 2019-04-29 16:11:23 -05:00
AmazingAmpharos 4d16559fae TR Logic Fix
This update should fully fix the key logic for Turtle Rock. This involved fixing several longstanding bugs in the program we didn't realize we had until trying to really fix this issue. Notable inclusions are that now seeds generated with a count will be identical to similarly numbered seeds generated individually and that now the always allows actually work (key for key apparently actually never happened in ER before and we didn't notice!). This also required refactoring the item pool generation before rule setting and individually moving pendant/crystal placement out of item pool generation (it's not a separate step between rule setting and normal item fill). A few exotic seed generation fails are still possible involving multi-entrance dungeons being really, really inaccessible in non-keysanity, but they're now appropriately super rare instead of being as common as they were before.
2019-04-18 16:11:11 -05:00
AmazingAmpharos a89c01f917
Fix inconsistent gen and fix retro
This fixes two issues:

-The same seed number was producing (subtly) different seeds. This was caused by misplaced random calls in the changes to the entrance shuffle; these calls to the rng were happening before the random seed was decided. Re-arranging that function should solve this. Thanks to hycutype for both noticing this and providing a solution.

-Retro mode was broken with the addition of hints. This was caused by the retro exclusive regions not having defined hints (for reasons I truly question myself over, they are defined in ItemList.py...) and then further by an obscure function in copy_world that builds the playthrough and deals with the sword cave not being updated for the new three parameter regions (region objects used to only require two parameters). This has been fixed.
2019-02-22 05:59:46 -06:00
AmazingAmpharos 91bee4f1b9
The rest of the helpful hint system
This should now work fairly completely. I've added the IR's junk hint text, updated the base ROM to v30, added a checkbox to the GUI/option to the command line to control the hint system, and fixed a bug in the previous upload that listed Skull Woods final erroneously in two arrays. I also now shuffle the Silver Arrow locations before hinting at the first one (so if multiple Silver Arrows are in a seed, all of them are equally likely to be the one Ganon hints at) and now call out "Castle Tower" in hints as a unique location and not as "Hyrule Castle" (what was I thinking on that?).
2019-01-23 03:04:42 -06:00
Kevin Cathcart b90a381e9b Basic impl. of boss shuffle for VT site enemizer integration 2018-09-26 13:12:20 -04:00
Kevin Cathcart 5539143f00 v30 updates 2018-09-22 22:51:54 -04:00
AmazingAmpharos 7c9c3db74d
Hopefully final 0.6.1 changes
-Add no logic mode.
-Fix swordless requirement for Mothula to be less strict.
-New version number and logic hash.
-Significantly updated readme.
2018-03-25 17:21:36 -05:00
Kevin Cathcart 18533fc77d Initial Take-Any implementation 2018-03-23 18:26:59 -04:00
Kevin Cathcart 9bd9bb4f93 Shop implementation
Also a few retro mode fixes
2018-03-18 21:01:45 -04:00
Kevin Cathcart 2e99db5403 Fix mixed line endings 2018-03-18 01:52:09 -04:00
Kevin Cathcart 3592d12bfd Convert several locations to using events
Event locations automatically get Moon Perarl requirements added, and
ensure the other referenced location is listed in the spoiler log's path
section
2018-03-18 01:39:48 -04:00
AmazingAmpharos 28d4ce0997
Beginnings of Retro Mode
This just adds a GUI/command line option to set the variable into world for retro mode and puts the universal key item into the list of defined items. None of the functionality is yet present.
2018-03-14 13:31:36 -05:00
AmazingAmpharos c5b62c9b93
Version number to satisfy msi requirement
Apparently we are required to always have three distinct numeric fields. Hilarious.
2018-03-03 12:29:52 -06:00
AmazingAmpharos 52300e8c85
Update version number and logic hash 2018-03-03 12:24:32 -06:00
Kevin Cathcart df0835d3e7 Extra Junk in GT for triforce Hunt 2018-03-01 21:36:30 -05:00
AmazingAmpharos 8af56fb586
Heart color changing
A new dropdown option is added to allow the player to choose heart color between four options: red, blue, green, and yellow. The adjuster supports this feature as well.
2018-02-27 20:26:33 -06:00
AmazingAmpharos caffd7e34c
GT filler and smith locations fixes
GT now pre-fills with junk if it's in the vanilla location regardless of the state of the shuffleganon flag.

The smith is now allowed to be in multi-entrance cave locations in the appropriate shuffles. A duplicate Old Man Cave (West) from bomb shop multis was also removed.
2018-02-24 22:42:18 -06:00
Kevin Cathcart 5989718586 Easy mode lamp update
You can find all 3 lamps before dark rooms for easy mode.
2018-02-24 16:16:50 -05:00
Kevin Cathcart 407687d18e Add Dam to spoiler Paths when appropriate 2018-02-09 19:20:54 -05:00
Kevin Cathcart f39886579a Add cross world bunny logic 2018-02-06 19:18:13 -05:00
Kevin Cathcart a0237e0863 Update mixed cave shuffle
It now shuffles super bomb into multi-entrance caves
(The list of entrances that owuld be blacksmith safe are marked, but
they are not safe because dwarf will not enter them, we may patch this
eventually)

Also include a missing dungeon region in the hyrule castle dungeon
definition

Include Tower of Hera as a valid old man location in new Full shuffle
2018-02-06 19:18:12 -05:00
Kevin Cathcart 8672099a3c Add new Full Shuffle
Add stubs for other new modes
2018-02-06 19:18:12 -05:00
AmazingAmpharos 564495648d
Custom item pool feature
This is the starting point for the new custom item pool feature that will let users specify the item pool. It is functional, perhaps due for some minor tweaking and definitely needs more testing. The command line side is bad, just two parameters that hopefully don't do anything under any circumstance if the user tries to use them (don't really intend to support a command line version of this feature); maybe there's a better way to let the command line ER work in general without having any opportunity to activate this feature. The GUI should probably show the user the sum of the current item pool out of 153 so the user knows how to size the item pool more easily, but that's a todo.
2018-01-21 20:43:44 -06:00
AmazingAmpharos 9f76ab025b
0.5.2.1 new logic hash 2018-01-18 01:10:39 -06:00
Kevin Cathcart 9a2198ac8f Bump version number & new logic hash 2018-01-07 04:49:47 -05:00
AmazingAmpharos 193b3323b7
Merge pull request #8 from KevinCathcart/Dev
Update through Bomb Shop in paths
2018-01-06 18:58:19 -06:00
Kevin Cathcart a155d455bb Add Bomb Shop to paths output if Pyramid Fairy Entrance is needed
Tweak internal handling of paths
2018-01-06 16:25:14 -05:00
Kevin Cathcart a86573d529 Add an extra pass to get correct spheres after culling
For an example of a circumstance in which the existing code produces
incorrect spheres, consider the following item locations in the vanilla
entrance layout:

* byrna in sphere 0
* hammer in sphere 0
* gloves in sphere 0
* bottle in sphere 0
* bow in spike cave (sphere 1)
* cape in hype cave (sphere 1)
* flippers on bumper cave Ledge (sphere 2)
* lastly both Swamp and PoD are pendants.

Well the culling phase will remove Byrna, because cape is good enough to
still get the bow. But now the bow in sphere 1 depends on the cape also
from sphere 1.
2018-01-06 14:55:30 -05:00