Commit Graph

435 Commits

Author SHA1 Message Date
Fabian Dill ff9b24e88e Hollow Knight integration
(prototype status)
2021-02-21 20:17:24 +01:00
Fabian Dill dcce53f8c8 Merge branch 'main' into breaking_changes
# Conflicts:
#	Adjuster.py
#	Gui.py
#	MultiClient.py
#	setup.py
#	worlds/alttp/AdjusterMain.py
#	worlds/alttp/Main.py
2021-02-21 20:15:07 +01:00
CaitSith2 8dc2a5748c Allow for possible reuse of er layout
This is done by assigning a unique seed to each player who doesn't have one set.  er layout seed is output in spoiler log.
2021-02-20 12:01:38 -08:00
Fabian Dill c55cf28229 allow ER coop 2021-02-20 02:30:55 +01:00
Fabian Dill 122e360ec8 Merge branch 'main' into breaking_changes
# Conflicts:
#	MultiClient.py
#	Utils.py
#	worlds/alttp/ItemPool.py
#	worlds/alttp/Main.py
#	worlds/alttp/Shops.py
2021-02-19 13:45:50 +01:00
Fabian Dill d8366fbac7 Add Activated Flute as a proper item 2021-02-15 22:33:44 +01:00
Fabian Dill e4d7e08963 when sweeping for events, only filter them once 2021-02-14 17:52:01 +01:00
Fabian Dill 0af77421fc remove fairy and big magic from bonk prizes in hard/expert
remove arrow prizes in retro when "g" is not toggled
rename "difficulty_adjustments" to "item_functionality"
2021-02-10 07:01:03 +01:00
Fabian Dill 96d544ac84 Speed up Progression Balancing, mostly by using generators and pre-sorts where the opportunity exists
In some cases multi-thousand element lists were created in-memory with near identical contents, per player, then discarded and reassembled.
Was testing against a case with 3 GB of additional memory use (50 players) which appeared to get stuck, but really was just very slow. This example case is fixed with these changes.
Additionally, progression balancing is now run after ShopSlotFill, so it is now "aware" of the changed progression shops can produce.
As well, special handling for keys was removed, as not all games will have the notion of keys.
2021-02-05 08:07:12 +01:00
Fabian Dill e4d4ff667c Some Shop fixes:
Make sure that dark lake hylia shop in inverted retains the blue potion, while allowing shop slots on top (potion will always be the leftmost slot, ignoring "i"/"f"/"g")
Cull Shop swap Candidates before generating weights, then keep track of updated sphere sizes during swaps. This significantly reduces the chance to run out of candidates, as large clumps of false candidates do not get included in the weight
Shop fill is slower with this, as all candidates need to be swept once, instead of on-demand; but this seemed the best way to address the remaining issues.
2021-02-03 14:24:29 +01:00
Fabian Dill fcbaa35cc5 new inverted logic, accounting for dark world flute activation 2021-02-02 11:24:17 +01:00
Fabian Dill 3d81f0cca7 update after merge from /main 2021-01-30 23:43:15 +01:00
Fabian Dill a646594f08 Merge branch 'main' into breaking_changes
# Conflicts:
#	BaseClasses.py
#	Fill.py
#	MultiClient.py
#	MultiServer.py
#	Utils.py
#	test/dungeons/TestDungeon.py
#	test/inverted/TestInverted.py
#	test/inverted_minor_glitches/TestInvertedMinor.py
#	test/inverted_owg/TestInvertedOWG.py
#	test/minor_glitches/TestMinor.py
#	test/owg/TestVanillaOWG.py
#	test/vanilla/TestVanilla.py
#	worlds/alttp/ItemPool.py
#	worlds/alttp/Main.py
#	worlds/alttp/Rom.py
2021-01-30 23:29:32 +01:00
Fabian Dill 2352445146 Remove all uses of "item.priority" as the remaining fill algorithms don't need it anymore. 2021-01-30 09:57:25 +01:00
CaitSith2 9ee5c50f88 Fixed non-deterministic shop-sanity shuffling. 2021-01-28 22:39:04 -08:00
Fabian Dill 9386a9c220 Update Menus 2021-01-24 21:58:26 +01:00
CaitSith2 6095cfc586 If any shop shuffle slots are defined, define ALL of them to avoid information leakage. 2021-01-22 05:40:50 -08:00
Fabian Dill 670b8b4b11 Merge branch 'main' into breaking_changes
# Conflicts:
#	MultiClient.py
#	WebUI.py
2021-01-21 05:36:16 +01:00
Fabian Dill 2b730ab1d4 Merge branch 'main' into multishop 2021-01-18 22:30:05 +01:00
Fabian Dill 4fb8067b5e document item plando force parameter 2021-01-18 05:07:53 +01:00
Fabian Dill ba07da6bba Change ShopShuffle to operate within current Sphere 2021-01-17 22:58:52 +01:00
Fabian Dill 514cd19367 Merge branch 'main' into breaking_changes
# Conflicts:
#	BaseClasses.py
#	Mystery.py
#	WebHostLib/downloads.py
#	WebHostLib/models.py
#	WebHostLib/templates/macros.html
#	WebHostLib/upload.py
#	worlds/alttp/ItemPool.py
#	worlds/alttp/Main.py
2021-01-17 06:50:25 +01:00
Fabian Dill f3e686ba9a Move Shop related stuff to a Shops module 2021-01-16 02:23:23 +01:00
Fabian Dill e8a57a4d24 Change hint for shop items to be "for sale"
Lock Dungeon Prizes, as they're not supposed to be moved by any swapping mechanic
2021-01-13 14:58:40 +01:00
Fabian Dill c0cdeef67a Optimize fulfills_accessibility by pruning to relevant locations 2021-01-13 14:27:17 +01:00
Fabian Dill 0978daba69 Make sure shop slots obey accessibility rules.
The way this is checked is quite computationally expensive, should revisit later.
2021-01-11 19:56:18 +01:00
Fabian Dill f12259dd7d Simplify ShopSlot Shuffling 2021-01-10 19:23:57 +01:00
Fabian Dill 9fcb317aca convert potion_shop_shuffle into 'w' shop_shuffle flag 2021-01-09 17:53:38 +01:00
Fabian Dill aed763c58f make potion_shop_shuffle more consistent in type use 2021-01-09 17:29:31 +01:00
Fabian Dill e36c6e97c1 Merge remote-tracking branch 'pepper/multishop-all' into multishop
# Conflicts:
#	EntranceRandomizer.py
#	Rom.py
#	WebHostLib/static/static/playerSettings.json
#	data/basepatch.bmbp
2021-01-09 16:03:59 +01:00
CaitSith2 8ef78cc32a Add options to allow silent failed plando placements. 2021-01-05 09:56:39 -08:00
CaitSith2 a6d53aafb0 Add option to hard require plando item placement. 2021-01-04 13:50:42 -08:00
Fabian Dill bd86a07115 make random world targeting smarter, in only considering possible unfilled locations 2021-01-04 15:14:20 +01:00
Fabian Dill 6bb7631382 fix unit tests 2021-01-03 17:16:07 +01:00
Fabian Dill 8ebd36b5a7 update Archipelago 2021-01-03 14:32:32 +01:00
Fabian Dill 08ca4245c1 Merge branch 'main' into breaking_changes
# Conflicts:
#	Adjuster.py
#	AdjusterMain.py
#	BaseClasses.py
#	MultiClient.py
#	MultiServer.py
#	Mystery.py
#	Utils.py
#	WebHostLib/downloads.py
#	WebHostLib/generate.py
#	dumpSprites.py
#	test/TestBase.py
#	worlds/alttp/EntranceRandomizer.py
#	worlds/alttp/Main.py
#	worlds/alttp/Rom.py
2021-01-03 13:13:59 +01:00
Fabian Dill be162f5b8d Connections Plando Support 2021-01-02 22:41:03 +01:00
Fabian Dill 07df9b9e80 Text Plando Support 2021-01-02 16:44:58 +01:00
Fabian Dill 938ccccbd4 make Item hashable 2021-01-02 12:59:19 +01:00
Fabian Dill f3b6be2b20 Item Plando Support 2021-01-02 12:49:43 +01:00
pepperpow 767c84a581 Merge branch 'shop-fill' into multishop-all 2020-12-15 02:36:48 -06:00
pepperpow ffe5b4b1a1 Fixes to clients/servers for shop checks 2020-12-15 02:34:22 -06:00
Fabian Dill 9b0f49e813 Revert logical easy item functionality 2020-12-04 22:44:55 +01:00
pepperpow 7b5bd016b9 Merge branch 'potion-shop' of github.com:pepperpow/MultiWorld-Utilities into multishop-all 2020-12-02 20:35:59 -06:00
pepperpow 360fcbea9e Add new patch, disallow single bee traps from shops 2020-12-02 20:00:08 -06:00
pepperpow 608d96329f Shop Item Pool fill feature + multiworld player compatability 2020-11-23 20:05:04 -06:00
pepperpow fe218fffa6 Potion Shop Changes
(reduced)
2020-11-23 19:00:11 -06:00
Fabian Dill fc2f1dfd29 implement "non_local_items" 2020-11-22 22:53:31 +01:00
Kaito Sinclaire 41a58084f1 Options for amount of time given in timer modes
(Primarily to make Timed OHKO a viable multiworld and/or mystery option,
but also works with other timer modes as well)
2020-10-28 16:20:59 -07:00
Fabian Dill 1d58f54101 move ALTTP to its own world folder 2020-10-24 05:38:56 +02:00
CaitSith2 52dd068577 Fix a typo 2020-10-07 13:48:18 -07:00
Fabian Dill b5d91af752 New Logic:
Enemy Shuffle awareness
Easy Item Functionality awareness
Dark Room Logic option
Boss Item Shuffle option
Silverless Ganon is a Minor Glitch

Faster Dungeon Item Fill
2020-10-07 19:51:46 +02:00
CaitSith2 9812e2cca5 Add sprite_pool for limiting sprites used in randomonevent. 2020-10-06 13:22:03 -07:00
CaitSith2 dd1bf446ea Put bombos into logic for swordless players 2020-09-27 10:17:35 -07:00
Fabian Dill 5b19818d14 fix prize shuffle alignment in spoiler log 2020-09-20 04:37:12 +02:00
Fabian Dill a668aa3b23 Make "Prize" shuffling an option 2020-09-20 04:35:45 +02:00
CaitSith2 f040e96bef Fix for Killable thieves, tile shuffle, bush shuffle always saying Yes in the spoiler log. 2020-09-14 23:09:47 -07:00
Fabian Dill d32bfb7bdf Change "not found" style errors from RuntimeError (misc error) to KeyError (value not found for a given search key) 2020-09-13 17:07:46 +02:00
Fabian Dill ada13a67fc rebuild world cache on cache miss 2020-09-08 15:02:37 +02:00
CaitSith2 096fc988c4 Show replacement items in shop spoiler if applicable 2020-09-01 21:23:43 -07:00
Fabian Dill 112868b751 remove duplicate shop setting in gui and make entrance/location cache renew slightly faster 2020-08-27 04:05:11 +02:00
Fabian Dill 6370f4793b Make triforce hunt item pool fully dynamic 2020-08-25 19:45:33 +02:00
Fabian Dill d86eb69b4c Remove old fill algorithms that I have no intention to optimize or support in the future 2020-08-25 17:44:03 +02:00
Fabian Dill 6d38e87527 Refactor some shop code 2020-08-25 14:31:20 +02:00
Fabian Dill ff79cb6e08 Fix custom item pool
fixes #136
2020-08-24 02:24:48 +02:00
Fabian Dill 9cabd41d3b shopsanity 2020-08-23 21:38:21 +02:00
Fabian Dill 26ab3dd69a Shop Shuffle
- more can be done here, but this works fine as a sometimes fun proof of concept
2020-08-23 15:03:06 +02:00
Fabian Dill b5048d99b9 optimize sweep_for_events, some has_ functions and some minor things 2020-08-22 19:19:29 +02:00
Fabian Dill 45268b18f3 another round of optimizations and cleanup including some I/O multithreading
also alias sprite names with their file names as that's an often done mistake
2020-08-21 18:35:48 +02:00
Fabian Dill 685ff49711 make "universal" small key shuffle a thing and split it out of retro
also make retro usable independently from the other world modes in mystery
2020-08-20 20:13:00 +02:00
Fabian Dill 367c853300 optimize getting player names 2020-08-20 03:57:09 +02:00
Fabian Dill cb4fa6dd33 Split enemy shuffle into its components 2020-08-19 23:24:17 +02:00
Fabian Dill 41163d50f5 default triforces in custom gui to their actual default 2020-08-16 16:49:48 +02:00
Fabian Dill df6ee1a08b Fill Algorithm optimisations (somewhat minor, but easy pickings) 2020-08-14 00:34:41 +02:00
Fabian Dill 615192f65b remove lamps_needed_for_dark_rooms variable 2020-08-01 06:26:30 +02:00
compiling d046829eae Change item placement rules to not be part of logic - they are used for local items and to prevent placing items in ways that would make seed generation impossible. 2020-07-16 18:59:23 +10:00
Fabian Dill 93ecf5988b implement secrets.SystemRandom() for --race 2020-07-14 07:01:51 +02:00
compiling 1594d82fb2 Add logic for including nologic seeds in multiworlds (overworld glitch rules)
nologic seeds are generated as beatable only with no progression balancing, where it is assumed the player can always win no matter where items are placed.
Add superbunny and dungeon revival to minor glitch ruleset.
2020-07-12 20:19:45 +10:00
Fabian Dill 57fe16ab60 remove special rules for pinball room 2020-07-09 16:16:31 +02:00
Fabian Dill dd19834e94 implement Silver Bow as default non-progressive Bow 2020-06-30 09:51:11 +02:00
Fabian Dill 521d3b0584 make larger trackers linked tables 2020-06-30 07:32:05 +02:00
CaitSith2 545bb8023c
Add ganon triforce hunt (#117)
* Add ganon triforce hunt

* Add self to license

* Correction of help message for Local Ganon Triforce Hunt.

* if 'triforcehunt in world.goal[player]:
2020-06-26 16:18:53 +02:00
Fabian Dill d3d68fcba2 Rename Escape Dungeon to Hyrule Castle by vote on discord 2020-06-24 16:22:49 +02:00
Fabian Dill f311d3a8b9 implement "crossover logic".
Makes it impossible that logical progression for a logic-having player is placed inside a no-logic world. All other placements remain available.
2020-06-19 03:01:23 +02:00
caitsith2 617312fd4b add available_triforce_pieces 2020-06-17 01:02:54 -07:00
Fabian Dill 9fcad5b392 fix that in a copied world progressive equipment would always say "on", including spoiler log 2020-06-09 18:44:02 +02:00
Fabian Dill 17f884d047 make triforce pieces required an option 2020-06-07 15:22:24 +02:00
Fabian Dill 2a649a749c fix crash when quick filling locally locked trash items 2020-06-04 03:30:59 +02:00
Fabian Dill e55726efca make world-local items available as a general option 2020-06-03 22:13:58 +02:00
Fabian Dill 3864eb5071 fix /snes <snes_interface> if interface contains spaces (which it shouldn't, but meh) 2020-06-03 02:19:16 +02:00
Fabian Dill daf3747bec add progression balancing to spoiler 2020-05-20 22:30:21 +02:00
CaitSith2 0deac5ef9d
Add Bosses to spoiler log (#96) 2020-05-20 22:21:05 +02:00
Fabian Dill 11678fa20b turn progression balancing into a per-player option 2020-05-18 03:54:29 +02:00
compiling 195f6c86d2 Replace world exploration with a faster algorithm - use BFS and keep track of all entrances that are currently blocked by progression items 2020-05-10 19:27:13 +10:00
Fabian Dill 1a53b0e69b rename has_blunt_weapon to has_melee_weapon 2020-04-20 19:17:10 +02:00
Fabian Dill 860faf6ef5 unify versions 2020-04-20 14:50:49 +02:00
Fabian Dill 31d3b7ce84 implement glitch_boots as a proper CLI option 2020-04-16 11:02:16 +02:00
Fabian Dill 26ea2d5905 some optimization 2020-04-14 18:59:00 +02:00
Fabian Dill 2fb419263e remove some instances of no longer existing __unicode__ 2020-04-10 21:31:15 +02:00
Fabian Dill 01b7a590e7 add glitch_boots mystery node 2020-04-10 20:58:52 +02:00
Fabian Dill 2ebc133cab add world get_type type checker 2020-04-10 20:54:18 +02:00
Fabian Dill 95d51d48bf Merge branch 'pull/23'
# Conflicts:
#	BaseClasses.py
#	EntranceShuffle.py
#	ItemList.py
#	Mystery.py
#	Rules.py
2020-04-08 15:07:19 +02:00
Fabian Dill f89c28d5c2 Merge branch 'master' into pull/58
# Conflicts:
#	AdjusterMain.py
#	BaseClasses.py
#	EntranceShuffle.py
#	Gui.py
#	InvertedRegions.py
#	ItemList.py
#	Main.py
#	Plando.py
#	Rom.py
#	Rules.py
2020-04-04 09:16:39 +02:00
compiling 270fbce516 Fix bombs check 2020-03-15 21:59:06 +11:00
compiling ab89f70fa3 Add 10 bombs as an uncle weapon for standard. 2020-03-15 11:09:34 +11:00
compiling 18c10dc7ad Make retro arrows always require buying the wooden arrow.
The Silver Arrows grant the ability to shoot if they are non-progressive, but this is harder to model.
2020-03-15 10:12:22 +11:00
compiling 5c95cf8730 Fix Half Magic logic 2020-03-14 10:31:28 +11:00
Fabian Dill 4cb5af19d6 write spoiler in unicode 2020-03-10 00:36:26 +01:00
Fabian Dill 99e7d51f11 remove reachable cache. Seems I missed invalidations somewhere as the wrong state can be retained. 2020-03-08 05:41:56 +01:00
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 (#24) 2020-02-03 03:52:57 +01:00
cassidy 21b8c73179
Add "timer" as individual setting (#23) 2020-02-03 02:10:56 +01:00
qadan 4b7694b50f updates 2020-01-28 18:19:07 -04:00
DatXFire fbfcb54bab Add missing colon (#15) 2020-01-22 18:08:56 +01:00
Fabian Dill 06ea170ecd
Non progressive option (#12)
* 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 (#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 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