Commit Graph

226 Commits

Author SHA1 Message Date
Fabian Dill f583db3ee9 remove collections_extended dependency and replace with much faster stdlib Counter 2020-03-07 23:35:55 +01:00
Fabian Dill 27b6dd8bd7 some speed improvments 2020-03-07 23:20:11 +01:00
Fabian Dill 6059db3ea0 some general improvements. Mostly performance improvements of patching roms in multiworld with enemizer 2020-03-06 23:08:46 +01:00
Fabian Dill e3beb702f8 fix clock mode, again 2020-03-04 13:55:03 +01:00
Fabian Dill d49bb10534 remove unused checks (as indicated by new type annotations) 2020-03-03 00:17:36 +01:00
Fabian Dill 260e156316 add some annotations to BaseClasses.py 2020-03-03 00:12:14 +01:00
Fabian Dill 11e1ad6901 some small improvements for mystery 2020-02-23 17:06:44 +01:00
Fabian Dill 95aea8c4b4 rename ocarina to flute. 2020-02-17 10:08:03 +01:00
Fabian Dill b04db006e0 implement server-client handshake and move hint system to optional colorama support 2020-02-16 15:32:40 +01:00
qadan 3d021356b8 hera and tr superbunny logic 2020-02-12 19:48:36 -04:00
qadan aa569d1c3d rework as region connectors (inverted will be broken) 2020-02-10 23:54:35 -04:00
qadan ff3b879a02 more idiomatic, bugfix too 2020-02-10 00:38:55 -04:00
qadan d22ccdedb3 some changes 2020-02-06 12:20:50 -04:00
cassidy 0e18dd06a6
Fix can_take_damage world attribute () 2020-02-03 03:52:57 +01:00
cassidy 21b8c73179
Add "timer" as individual setting () 2020-02-03 02:10:56 +01:00
qadan 4b7694b50f updates 2020-01-28 18:19:07 -04:00
DatXFire fbfcb54bab Add missing colon () 2020-01-22 18:08:56 +01:00
Fabian Dill 06ea170ecd
Non progressive option ()
* allow non-progressive

* use the actual extended_collections module
2020-01-22 06:28:58 +01:00
DatXFire 341e794cd8 Add Beemizer and Pot Shuffle to Spoiler Log Output 2020-01-18 12:51:10 -05:00
Bonta-kun f988f7671b --remote_items toggle: items will no longer be stored in the rom, a connection to a multiworld server will be required to receive them 2020-01-18 09:50:12 +01:00
Bonta-kun ad278f91d6 Multiworld: clients will now be automatically be identified from the rom name and have their names and teams set by the host, meaning those need to be configured during seed gen
Player names will show up in spoiler log and hint tiles instead of player id
MultiClient: autoreconnect to mw server
2020-01-14 10:42:27 +01:00
Bonta-kun 2f5a3e24dd Small shops refactor, cleanup some inverted mess 2020-01-10 11:41:22 +01:00
Bonta-kun 77ae96cf1b Refactor rom patching now that jsonrom patches can safely be merged 2020-01-10 07:02:44 +01:00
Bonta-kun 6bafdfafe6 Mystery: rom options can be set in weights file, eg
rom:
  sprite:
    random: 1
    randomonhit: 1
    mog: 1
  disablemusic: off
  quickswap:
    on: 1
    off: 0
  menuspeed:
    normal: 1
    instant: 1
    double: 1
    triple: 1
    quadruple: 1
    half: 1
  heartcolor:
    red: 1
    blue: 1
    green: 1
    yellow: 1
    random: 1
  heartbeep:
    double: 1
    normal: 1
    half: 1
    quarter: 1
    off: 1
  ow_palettes:
    default: 1
    random: 1
    blackout: 1
  uw_palettes:
    default: 1
    random: 1
    blackout: 1
2020-01-09 17:46:07 +01:00
Bonta-kun 42b85d7a3c Include sphere0 items in the spoiler log and in the playthrough 2020-01-09 08:31:49 +01:00
compiling edd656b903 Swap implementation of Take Any fix to match Multiworld. 2020-01-03 08:27:22 +11:00
compiling 0eed4bb527 Add shop door ids to tables (used when shop locations are vanilla)
Do not replace Upgrade Fairy with retro shop
2020-01-02 16:33:00 +11:00
Bonta-kun fe307b1ac7 bzzz bzzz 2019-12-30 03:03:53 +01:00
Bonta-kun 819f6dc975 Retro: fix take any entrances with default connections 2019-12-27 19:11:41 +01:00
Bonta-kun aa080eb455 Include unreachable items in the spoiler log 2019-12-21 13:33:07 +01:00
Bonta-kun 4a16ba74e8 Fix triforce hunt icon showing for every player 2019-12-21 10:42:59 +01:00
Bonta-kun 8721310cf7 World: include can_access_trock_eyebridge can_access_trock_front can_access_trock_big_chest can_access_trock_middle and fix_fake_world in the player specific attributes 2019-12-18 20:45:51 +01:00
Bonta-kun 36bdb5f487 Spoiler: reorder some settings for visibility 2019-12-17 21:12:05 +01:00
Bonta-kun a24fe1f3bf World.__init__: group player attributes to remove some redundancy 2019-12-17 21:09:33 +01:00
Bonta-kun 1ecb5fe40b Individual settings: shufflebosses shuffleenemies enemy_health enemy_damage 2019-12-17 15:55:53 +01:00
Bonta-kun 8a5eef11ce Individual settings: hints 2019-12-17 12:22:55 +01:00
Bonta-kun d9281adc07 Individual settings: accessibility 2019-12-17 12:14:29 +01:00
Bonta-kun e5246d5d5a Individual settings: retro 2019-12-17 00:16:02 +01:00
Bonta-kun 1315eb55cf Individual settings: map/compass/key/bk shuffle 2019-12-16 21:46:47 +01:00
Bonta-kun dc26dfce77 Individual settings: crystals_ganon crystals_gt openpyramid 2019-12-16 19:09:15 +01:00
Bonta-kun ec1b9eca43 Individual settings: shuffle 2019-12-16 18:24:34 +01:00
Bonta-kun 203147dda1 Individual settings: difficulty and item_functionality 2019-12-16 17:46:21 +01:00
Bonta-kun c1788c070d Individual settings: goal 2019-12-16 16:55:00 +01:00
Bonta-kun 9ca755d5b2 Individual settings: swords 2019-12-16 16:54:57 +01:00
Bonta-kun ab28858a8f Individual settings: mode 2019-12-16 16:54:46 +01:00
Bonta-kun 79786c7c9e Individual settings: logic 2019-12-16 13:26:07 +01:00
Bonta-kun d33582a3a2 Enable bombs in escape assist with an enemized standard start so you can beat the game 2019-12-16 09:59:16 +01:00
Bonta-kun d608d5ca30 Optimize update_reachable_regions using the new region cache, it is almost twice as fast now 2019-12-14 19:53:19 +01:00
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 25068bcfdd Added an option to pre-open the pyramid hole (aka "fast ganon") 2019-12-12 09:20:32 +01:00
Bonta-kun d87cb2c380 BaseClasses: do not tag every location as locked by default 2019-12-10 19:21:05 +01:00
Bonta-kun f479c8dc23 dont throw on __len__ attribute 2019-12-10 02:14:22 +01:00
Bonta-kun 55a30aa91f multiworld 2019-12-09 19:27:56 +01:00
cassidoxa 2859acef7d Swordless rom writes and inverted fixes
* Update Swordless rom writes

* Remove swordless as possible mode in ItemList.py

* Fix inverted HC Ledge access
Added collection state helper methods for determining lw/dw access
Restricted locations where Link's House can be in inverted
Dark Sanc and Link's House can no longer be at the back of Skull Woods
Fixed minor error in inverted bunny rules

* Update Link's House Shuffling in inverted insanity

* More isolated entrances not to put Link's House at

* Fix Link's House in dungeons shuffles

* More dungeons shuffle stuff I forgot
2019-09-21 21:59:16 -04:00
Kevin Cathcart ab99e8c223 Triforce Hunt turn-in logic 2019-08-28 21:12:44 -04:00
Kevin Cathcart df6bf6f99c Fix errors 2019-08-24 15:53:21 -04:00
Kevin Cathcart eb1b5053e5 update json spoiler meta section 2019-08-24 15:35:58 -04:00
cassidoxa c042442d98 Pre bomb TR doors in inverted 2019-08-16 23:00:17 -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
Kevin Cathcart 90e5f522d8 Partially implement variable crystal requirements 2019-08-03 16:48:31 -04:00
cassidoxa 18f1275050 Inverted Mode ()
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 dcca15eda7 Avoid changing spoiler file for single world 2019-07-13 18:11:43 -04:00
Kevin Cathcart c4570b732d Remove option_identifier
It is no longer needed because we set the hash based on an actual
hash of the rom contents, so it is not based on the title field anymore.
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
Kevin Cathcart 0b9e144f8e Minor fixes and clarifications for Bonta's Multiworld code 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 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 7b56932e31 TR Key Logic Update
This is just for review and isn't tested beyond seeing that it runs. In theory, this should fix the TR based seed generation failures and make TR Small Key requirements as precise as possible.
2019-04-15 19:17:44 -05:00
AmazingAmpharos 62df55242a Part 1 of Hint Improvement
This causes items to use clear, specific names instead of the pedestal style ambiguous names. This also randomizes the order of the two items listed in the hints for Mire left and Swamp left. Part 2 is going to be a substantial number of changes/improvements to location names.
2019-04-08 20:11:33 -05: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
AmazingAmpharos b2defa664d
Hint system prototype
The junk hints still need filled in. For now, they're just clones of the Tavern Man hints. Also I haven't really tested this at all beyond verifying it runs and the ROM it makes boots. That needs to be addressed of course.
2019-01-20 01:01:02 -06:00
Kevin Cathcart 0f914e47ed Fix captialization of bosses spoiler section 2018-09-26 20:23:20 -04: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
Kevin Cathcart b259c10d27 Minor bug fixes and other updates 2018-09-16 12:55:49 -04:00
Kevin Cathcart 4c6a140af9 Fix json spoiler serialization
Correct shop spoiler
Adjust cases for main spoiler sections
2018-03-27 00:42:16 -04:00
Kevin Cathcart a57918cf05 Update dungeon order 2018-03-24 13:45:47 -04:00
Kevin Cathcart 360287f0fb Fix spoiler issue from take anys 2018-03-24 13:45:47 -04:00
Kevin Cathcart cb70174508 Add shops to spoiler
Also fix breakage from last spoiler change
2018-03-24 13:45:47 -04:00
Kevin Cathcart 71280762df Better VT site spoilers 2018-03-23 22:42:39 -04: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
AmazingAmpharos f701aefa28
More of Retro Mode
Implement correct Retro Mode item pools.
Set up most of the key logic to handle retro mode (still needs shop access)
Set ROM flags appropriately.
TODO: Support Retro Mode with custom item pools, deal with shops in general, deal with Bow paired with arrow requirements, correct Expert item pool for silvers, test older fill algorithms with retro mode, deal with the new Sahas/Bomb Shop reveal map info ROM flags.
2018-03-15 16:23:02 -05: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 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
AmazingAmpharos deccff249b
New restricted shuffle
This implements the new restricted shuffle that does not respect the difference between single and multi-entrance caves. Restricted_legacy is present for the old restricted behavior. Full_cross_worlds is renamed to Crossed, and all listing of shuffles is given a consistent order that pushes all the _legacy variants to the back.
2018-02-20 14:34:39 -06:00
Kevin Cathcart e490a3e224 Add new insanity mode 2018-02-18 14:52:34 -05:00
AmazingAmpharos 5e743e1c33
Powder patch fixes
Last quick and dirty fix push was a little too quick and dirty. My bad.
2018-02-11 22:35:02 -06:00
AmazingAmpharos abedfd4d1e
Quick Mushroom turn-in fix
This is a quick and dirty (will be replaced later) fix for having to screen transition after turning in the Mushroom, not applied in shuffles that don't move the potion shop. Also a minor fix is in place so the list of entrances that don't invoke the Skull Final etc. exit offset is expanded to include the bottom of Superbunny Cave and TR Big Chest.
2018-02-11 22:25:19 -06:00
Kevin Cathcart e090692c15 style/whitespace tweaks 2018-02-10 18:12:48 -05:00
Kevin Cathcart cd18be71d9 Add new full_cross_worlds shuffle
Untested, seed generates, but might be horrifically broken.
2018-02-06 19:18:14 -05:00
Kevin Cathcart 124e3b69de Change how option_identifier is calculated
This will provide more headroom before running out of space in the 32
bits of the title where this data goes.
2018-02-06 19:18:13 -05:00