195 Commits

Author SHA1 Message Date
lordlou
77ec8d4141 Added Super Metroid support (#46)
Varia Randomizer based implementation
LttPClient -> SNIClient
2021-11-12 14:00:11 +01:00
Fabian Dill
a82bf1bb32 Options: raise Exception if per-game options are in root
Options: implement progression balancing and accessibility on new system
Options: implement the notion of "common" and "per_game_common" options in various systems
Options: centralize item and location name checking
Spoiler: prettier print some lists, sets and dicts
WebHost: add common options into /templates
2021-09-17 00:17:54 +02:00
Fabian Dill
74c30ce09a Fill: remove/delay some LttP imports 2021-09-02 03:45:37 +02:00
Fabian Dill
fd6e009c4b Fill: fix placing non_local + non advancement items 2021-08-30 22:20:44 +02:00
Fabian Dill
30ac7baa2c FactorioClient: Batch-Send RCON commands when receiving catch-up locations and multiple items. 2021-08-24 09:52:12 +02:00
Fabian Dill
a532ceeb0a AutoWorld: Should no longer need to overwrite collect, collect_item should be used instead
AutoWorld: Now correctly automatically applies State.remove if collect_item is also correct
LttP: Make keys advancement items

This feels like it improved generation chance. Might not be the case.
2021-08-10 09:47:28 +02:00
Fabian Dill
9ec0680ce5 LttP: move game specific fill to new AutoWorld fill_hook 2021-08-10 09:03:44 +02:00
Fabian Dill
299036ecca LttP: move some LttP specific things more towards locations where they belong. 2021-08-10 08:00:53 +02:00
Fabian Dill
ba3bb201cd Multiple: Followed a rabbit hole of moving LttP Rom generation to AutoWorld
Generator: Re-allow names with spaces (and see what breaks)
Generator: Removed teams (Note that teams are intended to move from a generation step feature to a server runtime feature, allowing dynamic creation of an already generated MW)
LttP: All Rom Options are now on the new system
LttP: palette option "random" is now called "good"
LttP: Roms are now created as part of the general output file creation step
LttP: disable Music is now Music, removing potential double negatives
LttP & Factorio: Progressive option random is now grouped_random
LttP: Enemy damage option random is now Enemy damage: chaos
2021-08-09 09:15:41 +02:00
Fabian Dill
af30d8b7cd ensure Hyrule Castle Small Key locality in standard + small key shuffle 2021-07-24 01:42:00 +02:00
espeon65536
64c80c32f0 update exclusion procedure for clarity 2021-07-23 18:18:32 +00:00
espeon65536
12eba33dbf separate fill step for nonadvancement nonexcluded items 2021-07-23 18:18:32 +00:00
espeon65536
0eee1f2d01 add separate can_exclude property, so non-progression items can be marked non-excluded 2021-07-23 18:18:32 +00:00
Fabian Dill
2fc4006dfa RIP: MultiMystery and Mystery, now there's just Generate
Other changes:
host.yaml Multi Mystery options were moved and changed
generate_output now has an output_directory argument
MultiWorld.get_game_players(<game>) now replaces <game>_player_ids
Python venv should now work properly
2021-07-21 18:08:15 +02:00
Fabian Dill
304f63aedf Merge branch 'espeon' into Archipelago_Main
# Conflicts:
#	playerSettings.yaml
2021-06-21 02:49:06 +02:00
espeon65536
deff356910 Added HMG check to all checks for OWG and NL 2021-06-14 22:10:26 -05:00
Fabian Dill
59a56c803a Log which player's plando has caused a placement failure 2021-06-14 23:42:13 +02:00
Fabian Dill
cea2f81b86 remove IRH special rule now that it's a 1/1 triforce piece hunt 2021-06-13 07:57:34 +02:00
espeon65536
d425e5eb6a disable GT junk fill in hybrid 2021-06-12 13:11:14 -05:00
Fabian Dill
f2a1858b59 Implement (most) Hollow Knight Options 2021-03-21 00:47:17 +01:00
Fabian Dill
bbe51c4cc7 Speed up restrictive_fill a bit.
This also changes behaviour slightly; it used to fill beatable only players' items first, now it shuffles it all together. It is not documented why this was done, so hopefully this doesn't undo something intentional.
2021-03-18 17:27:31 +01:00
Fabian Dill
567954a17f Merge branch 'main' into breaking_changes
# Conflicts:
#	BaseClasses.py
2021-03-06 05:27:16 +01:00
Fabian Dill
f130829c0c Massively speed up progression balancing for very large multiworlds
Several times faster was observed in testing. 10+ hours to less than 2 in the last sample.
2021-03-04 08:10:30 +01:00
Fabian Dill
bda86a65f7 Add Grimmkin Flames logic 2021-02-27 16:27:35 +01:00
Fabian Dill
499f67c586 HK Logic 2021-02-24 06:02:51 +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
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
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
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
eb1c4313a8 Fix root cause of items not being placed into locations 2021-01-26 13:11:43 -08:00
CaitSith2
c88d9b4339 Additional fixes for Ice Rod Hunt 2021-01-26 07:06:57 -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
f4281f81f5 Merge branch 'main' into multishop 2021-01-17 22:08:43 +01:00
Fabian Dill
a87a79eb00 remove some duplicate code 2021-01-17 22:08:28 +01:00
Fabian Dill
7333a15f1f handle merge conflicts after plando update 2021-01-17 06:54:38 +01:00
CaitSith2
082a7b7e41 Merge branch 'main' into multishop 2021-01-13 10:40:52 -08:00
CaitSith2
7bb115de72 Fix bug with placements always being empty.
It will never be not empty, because every placement that succeeds gets its event set to true, and the conditional expects locations already placed within the fill to also not be events.
2021-01-13 10:40:23 -08:00
Fabian Dill
058436e47f shop cleanup and correctly backreference swapped items' locations
Also fixes a false reference in progression balancing from 2019 (swapped Location.item.location was not updated)
2021-01-11 13:35:48 +01:00
Fabian Dill
36123308a6 Refine Shop Item Candidate picking 2021-01-10 15:50:18 +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
eea4cb5815 Make sure yamls that specify key drop plando locations don't fail. 2021-01-08 06:37:23 -08:00
Fabian Dill
37cf2e1ac4 speed up local item fill, by sorting by world once instead of up to twice per player 2021-01-07 12:43:11 +01:00
CaitSith2
113efa8f02 Fix bugs that prevent seed rolling from continuing if too many plando items are placed. 2021-01-06 11:13:22 -08: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
f3b6be2b20 Item Plando Support 2021-01-02 12:49:43 +01:00
pepperpow
c66e97faf6 Merge branch 'shop-fill' into multishop-all 2020-12-23 11:29:20 -06:00