Commit Graph

654 Commits

Author SHA1 Message Date
Fabian Dill 22aa4cbb9f Factorio: Fix Rocket Launch event getting encoded into mod 2021-05-22 07:54:12 +02:00
Fabian Dill 71bb5b850e set correct player ID for Factorio Victory 2021-05-22 07:06:09 +02:00
Fabian Dill e1b4975a11 Add Crafting Machine awareness to Factorio logic
(should have no effect on vanilla, mostly for modded gameplay)
2021-05-19 06:52:53 +02:00
Fabian Dill f8a5e8bfc7 add Factorio Victory Event 2021-05-19 05:33:44 +02:00
espeon65536 685de847c4
Minecraft updates (#13)
* Minecraft locations, items, and generation without logic

* added id lookup for minecraft

* typing import fix in minecraft/Items.py

* fix 2

* implementing Minecraft options and hard/postgame advancement exclusion

* first logic pass (75/80)

* logic pass 2 and proper completion conditions

* added insane difficulty pool, modified method of excluding item pools for easier extension

* bump network_data_package version

* minecraft testing framework

* switch Ancient Debris to Netherite Scrap to avoid advancement triggering on receiving that item

* Testing now functions, split tests up by advancement pane, added some story tests

* Newer testing framework: every advancement gets its own function, for ease of testing

* fixed logic for The End... Again...

* changed option names to "include_hard_advancements" etc.

* village/pillager-related advancements now require can_adventure: weapon + food

* a few minecraft tests

* rename "Flint & Steel" to "Flint and Steel" for parity with in-game name

* additional MC tests

* more tests, mostly nether-related tests

* more tests, removed anvil path for Two Birds One Arrow

* include Minecraft slot data, and a world seed for each Minecraft player slot

* Added new items: ender pearls, lapis, porkchops

* All remaining Minecraft tests

* formatting of Minecraft tests and logic for better readability

* require Wither kill for Monsters Hunted

* properly removed 8 Emeralds item from item pool

* enchanting required for wither; fishing rod required for water breathing; water breathing required for elder guardian kill

* Added 12 new advancements (ported from old achievement system)

* renamed "On a Rail" for consistency with modern advancements

* tests for the new advancements

* moved slot_data generation for minecraft into worlds/minecraft/__init__.py, added logic_version to slot_data

* output minecraft options in the spoiler log

* modified advancement goal values for new advancements

* make non-native Minecraft items appear as Shovel in ALttP, and unknown-game items as Power Stars

* fixed glowstone block logic for Not Quite Nine Lives

* setup for shuffling MC structures: building ER world and shuffling regions/entrances

* ensured Nether Fortresses can't be placed in the End

* finished logic for structure randomization

* fixed nonnative items always showing up as Hammers in ALttP shops

* output minecraft structure info in the spoiler

* generate .apmc file for communication with MC client

* fixed structure rando always using the same seed

* move stuff to worlds/minecraft/Regions.py

* make output apmc file have consistent name with other files

* added minecraft bottle macro; fixed tests imports

* generalizing MC region generation

* restructured structure shuffling in preparation for structure plando

* only output structure rando info in spoiler if they are shuffled

* Force structure rando to always be off, for the stable release

* added Minecraft options to player settings

* formally added combat_difficulty as an option

* Added Ender Dragon into playthrough, cleaned up goal map

* Added new difficulties: Easy, Normal, Hard combat

* moved .apmc generation time to prevent outputs on failed generation

* updated tests for new combat logic

* Fixed bug causing generation to fail; removed Nether Fortress event since it should no longer be needed with the fix

* moved all MC-specific functions into gen_minecraft

* renamed "logic_version" to "client_version"

* bug fixes
properly flagged event locations/items with id None
moved generation back to Main.py to fix mysterious generation failures

* moved link_minecraft_regions into minecraft init, left create_regions in Main for caching

* added seed_name, player_name, client_version to apmc file

* reenabled structure shuffle

* added entrance tests for minecraft

* Minecraft logic updates
Wither kill now considers nether fortresses as a valid source of soul sand
A Furious Cocktail now requires beacons for resistance and village access for carrots
Uneasy Alliance now requires fishing rod to pull the ghast through the portal
On a Rail now requires iron pickaxe to make powered rails
Overkill now may require strength II without stone axe, which needs nether access

* embed all apmc info into slot_data

* updated MC tests for logic changes

* put apmc into zipfile

Co-authored-by: achuang <alexander.w.chuang@gmail.com>
2021-05-16 00:49:58 +02:00
Fabian Dill 3e1941a561 allow Factorio Client to recognize if it's trying to connect to the wrong multiworld. 2021-05-16 00:21:00 +02:00
Fabian Dill b82d6cec31 regain basic WebHost functionality 2021-05-13 21:57:11 +02:00
Fabian Dill daa959e353 remove suppress rom argument 2021-05-13 01:40:36 +02:00
Fabian Dill 109eb5b9dc start of split 2021-05-13 01:34:59 +02:00
Fabian Dill a231850911 Make hint costs relative 2021-05-11 23:08:50 +02:00
Fabian Dill 1b2283b173 Factorio: correctly cache control_template to allow multiple Factorio worlds 2021-05-11 13:28:58 +02:00
Fabian Dill 729088fd85 Fix generation failure if aga tower door was placed on HC ledge in inverted dungeonsfull 2021-05-11 01:26:59 +02:00
Fabian Dill e50db61030 constrict Factorio logic to require all paths to a product, not any.
Should narrow this down in a careful manner later.
2021-05-10 02:33:54 +02:00
Fabian Dill 909172cbad Factorio, Minecraft & Hollow Knight: add startinventory support 2021-05-09 21:22:21 +02:00
Fabian Dill c55983af5f Factorio: add starting_items 2021-05-09 17:46:26 +02:00
Fabian Dill 9c3d12dc55 Factorio: Embed slot name into mod 2021-05-09 17:26:53 +02:00
espeon65536 2f7e532f4f
Minecraft Randomizer
Squash merge, original Commits:

* Minecraft locations, items, and generation without logic

* added id lookup for minecraft

* typing import fix in minecraft/Items.py

* fix 2

* implementing Minecraft options and hard/postgame advancement exclusion

* first logic pass (75/80)

* logic pass 2 and proper completion conditions

* added insane difficulty pool, modified method of excluding item pools for easier extension

* bump network_data_package version

* minecraft testing framework

* switch Ancient Debris to Netherite Scrap to avoid advancement triggering on receiving that item

* Testing now functions, split tests up by advancement pane, added some story tests

* Newer testing framework: every advancement gets its own function, for ease of testing

* fixed logic for The End... Again...

* changed option names to "include_hard_advancements" etc.

* village/pillager-related advancements now require can_adventure: weapon + food

* a few minecraft tests

* rename "Flint & Steel" to "Flint and Steel" for parity with in-game name

* additional MC tests

* more tests, mostly nether-related tests

* more tests, removed anvil path for Two Birds One Arrow

* include Minecraft slot data, and a world seed for each Minecraft player slot

* Added new items: ender pearls, lapis, porkchops

* All remaining Minecraft tests

* formatting of Minecraft tests and logic for better readability

* require Wither kill for Monsters Hunted

* properly removed 8 Emeralds item from item pool

* enchanting required for wither; fishing rod required for water breathing; water breathing required for elder guardian kill

* Added 12 new advancements (ported from old achievement system)

* renamed "On a Rail" for consistency with modern advancements

* tests for the new advancements

* moved slot_data generation for minecraft into worlds/minecraft/__init__.py, added logic_version to slot_data

* output minecraft options in the spoiler log

* modified advancement goal values for new advancements

* make non-native Minecraft items appear as Shovel in ALttP, and unknown-game items as Power Stars

* fixed glowstone block logic for Not Quite Nine Lives

* setup for shuffling MC structures: building ER world and shuffling regions/entrances

* ensured Nether Fortresses can't be placed in the End

* finished logic for structure randomization

* fixed nonnative items always showing up as Hammers in ALttP shops

* output minecraft structure info in the spoiler

* generate .apmc file for communication with MC client

* fixed structure rando always using the same seed

* move stuff to worlds/minecraft/Regions.py

* make output apmc file have consistent name with other files

* added minecraft bottle macro; fixed tests imports

* generalizing MC region generation

* restructured structure shuffling in preparation for structure plando

* only output structure rando info in spoiler if they are shuffled

* Force structure rando to always be off, for the stable release

* added Minecraft options to player settings

* formally added combat_difficulty as an option

* Added Ender Dragon into playthrough, cleaned up goal map

* Added new difficulties: Easy, Normal, Hard combat

* moved .apmc generation time to prevent outputs on failed generation

* updated tests for new combat logic

* Fixed bug causing generation to fail; removed Nether Fortress event since it should no longer be needed with the fix

* moved all MC-specific functions into gen_minecraft

* renamed "logic_version" to "client_version"

* bug fixes
properly flagged event locations/items with id None
moved generation back to Main.py to fix mysterious generation failures

* moved link_minecraft_regions into minecraft init, left create_regions in Main for caching

* added seed_name, player_name, client_version to apmc file

* reenabled structure shuffle

* added entrance tests for minecraft

Co-authored-by: achuang <alexander.w.chuang@gmail.com>
2021-05-08 13:38:57 +02:00
Fabian Dill 5c9aa09c80 LttP: implement dungeonscrossed ER 2021-05-08 12:04:03 +02:00
Fabian Dill e5bbcb8d27 merge of 6bf02455e6 2021-05-08 01:49:30 +02:00
Fabian Dill cf488e5a5d convert parse_zspr to staticmethod 2021-05-08 01:44:37 +02:00
Fabian Dill 36ef9e8a72 LttP: Read author game display name from zspr 2021-05-07 22:34:02 +02:00
Fabian Dill e7d254aed7 Factorio: make automation science pack rocket recipe consistent with the others 2021-05-07 22:09:04 +02:00
Fabian Dill 298f2f652a Factorio: add rocket recipe scaling by max science 2021-05-07 21:58:46 +02:00
Fabian Dill 5cb2689609 LttP: speed up ER shuffling caves 2021-05-07 21:01:13 +02:00
Fabian Dill 9ab5ec426d remove leftover from when recipes were events 2021-05-06 12:53:57 +02:00
Fabian Dill 77d3bf9172 Factorio: Allow assembling machine 1 to use fluids
Should improve the flow of the game a bit, no longer having to wait for automation-2 to get started with rocket fuel, processing units and others.
2021-05-03 18:06:21 +02:00
Fabian Dill 328f132498 include player name in factorio mod name. 2021-05-03 16:29:05 +02:00
Fabian Dill 4a75d27261 don't precollect Hollow Knight items 2021-05-01 02:16:19 +02:00
Fabian Dill 95358bc523 Never download a sprite with Author "Nintendo" 2021-04-28 10:31:24 +02:00
Fabian Dill 4fc1ce77ac only build vanilla sprite data once correctly 2021-04-28 02:39:55 +02:00
Fabian Dill b8c7d6a72f remove remaining sprite data 2021-04-27 07:19:53 +02:00
Fabian Dill 569e0e3004 Factorio: add option: random tech ingredients 2021-04-24 01:16:49 +02:00
Fabian Dill a5efed83b9 Set non-LttP Shop prices to 5 to 140 Rupee range 2021-04-16 21:41:19 +02:00
Fabian Dill 433981fd3d pass explicit seed_name from MultiMystery.py 2021-04-12 09:45:07 +02:00
Fabian Dill 2df7e4e537 add seed_name to multidata and RoomInfo 2021-04-12 09:36:45 +02:00
Fabian Dill 764e6e7926 Fix MultiTracker breaking after Hint is used 2021-04-12 00:06:27 +02:00
Fabian Dill 4292cdddd5 Factorio: add Funnel tech shape 2021-04-11 18:19:47 +02:00
Fabian Dill 1943586221 Factorio: add medium_diamonds and pyramid tech tree layouts 2021-04-10 19:34:30 +02:00
Fabian Dill 6d15aef88a Factorio: align tech tree sections in growing ingredient requirements 2021-04-10 18:45:11 +02:00
Fabian Dill d4b422840a Fix dynamic world attributes not updating 2021-04-10 06:36:06 +02:00
Fabian Dill 0586b24579 Factorio: add small_diamonds tech tree layout 2021-04-10 03:03:46 +02:00
Fabian Dill e11016b0a2 fix _done having ingredient letters instead of starting name 2021-04-10 00:21:56 +02:00
Fabian Dill 74a368458e dynamically mark advancement technologies 2021-04-10 00:17:55 +02:00
Fabian Dill 1b70d485c0 shortcut logic for requirement-less technologies 2021-04-10 00:08:59 +02:00
Fabian Dill 2355f9c8d3 Only apply logic for allowed science pack 2021-04-09 22:16:55 +02:00
Fabian Dill ceea55e3c6 traverse recipe tree for Factorio logic 2021-04-09 22:10:04 +02:00
Fabian Dill c4d6ac50be turn weapons into boolean swordless 2021-04-09 20:40:45 +02:00
Fabian Dill f0a6b5a8e4 Factorio:
add visibility option
fix tech_cost using the wrong variable name
fix yaml defaults not init'ing the Option class
LttP:
fix potential pathing confusion in maseya palette shuffler
Server:
Minimum version per team made no sense, removed
2021-04-08 19:53:24 +02:00
Fabian Dill 4c71662719 factorio: award free samples to entire force 2021-04-07 01:55:53 +02:00
Fabian Dill 96a28ed41e implement Factorio option "free_samples" 2021-04-06 21:16:25 +02:00
Fabian Dill 635897574f clean up technology handling a bit 2021-04-05 15:37:15 +02:00
Fabian Dill d451145d53 Merge branch 'main' into Archipelago_Main 2021-04-04 03:17:46 +02:00
Fabian Dill 250099f5fd Small adjustments 2021-04-03 20:02:15 +02:00
Fabian Dill c14a150795 Output Factorio mod as zip 2021-04-03 15:06:32 +02:00
Fabian Dill 91bcd59940 implement Factorio options max_science_pack and tech_cost
also give warnings about deprecated LttP options
also fix FactorioClient.py getting stuck if send an unknown item id
also fix !missing having an extra newline after each entry
also default to no webui
2021-04-03 14:47:49 +02:00
Fabian Dill 01ef041b86 last minute fixing 2021-04-01 20:31:39 +02:00
Fabian Dill d24ee45462 Merge branch 'main' into Archipelago_Main
# Conflicts:
#	BaseClasses.py
#	LttPAdjuster.py
#	Main.py
#	Mystery.py
#	Utils.py
#	WebHostLib/generate.py
#	playerSettings.yaml
2021-04-01 11:44:37 +02:00
Fabian Dill dc73fa0f33 Factorio integration 2021-04-01 11:40:58 +02:00
Fabian Dill 1f5bcb6273 update basic and normal boss shuffling with a less biased algorithm 2021-03-26 04:05:36 +01:00
Fabian Dill a5ab152c2b implement cursed 2021-03-23 08:57:04 +01:00
Fabian Dill 71fb238916 According to Espeon, this is fine; removing TODO 2021-03-23 00:13:21 +01:00
Fabian Dill f2a1858b59 Implement (most) Hollow Knight Options 2021-03-21 00:47:17 +01:00
Fabian Dill 8c6c7bc575 Update intro text 2021-03-20 02:09:17 +01:00
Fabian Dill cdc330629b allow more HK names in console commands 2021-03-19 04:30:19 +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 01ef29568a Temporarily destroy the world, instead of copying it.
Not pretty, but faster. Unfortunately can't be threaded alongside rom/multidata creation, as otherwise locations may be empty at certain times.
2021-03-17 10:53:40 +01:00
Fabian Dill 91c0650b42 remove some missed nonlocal world references
that would refer to a different world after copying it
It is static data though, so it hasn't created an actual bug (yet)
2021-03-14 22:59:41 +01:00
Fabian Dill 3d93f659e3 some option updates 2021-03-14 08:38:02 +01:00
Fabian Dill 4b499d2b1c fix location hints not being able to get the correct text 2021-03-14 00:27:06 +01:00
Fabian Dill 6455dc3ffc Merge branch 'main' into breaking_changes
# Conflicts:
#	README.md
2021-03-13 23:34:38 +01:00
Fabian Dill a528ed5e9e Client now uses location_id consistently internally, instead of switching on a dime all the time
And some smaller changes
2021-03-07 22:05:07 +01:00
Fabian Dill f7dc21ddcc Merge branch 'main' into breaking_changes
# Conflicts:
#	Main.py
#	Utils.py
2021-03-07 22:04:06 +01:00
Fabian Dill 1d6aabeea6 fix some missed bmbp -> apbp spots 2021-03-03 02:02:41 +01:00
Fabian Dill bfa9bde348 Merge branch 'main' into breaking_changes 2021-03-03 02:00:10 +01:00
Fabian Dill 0d576eefbb Merge branch 'main' into breaking_changes
# Conflicts:
#	Main.py
#	worlds/alttp/EntranceRandomizer.py
2021-03-03 01:54:52 +01:00
Fabian Dill 7871555620 Implement PrintJSON
Remove deprecated network packets
Make Client send new locations checked only once
Simplify register_location_checks
Rip out Server savegame compatibility
2021-03-02 22:31:44 +01:00
Fabian Dill 07b9fcfefc minor cleanup 2021-02-28 20:48:30 +01:00
Fabian Dill 612c3c23c0 spheres should ignore empty locations 2021-02-27 18:58:17 +01:00
Fabian Dill 8bfddb7fc6 Remove Single-Item logic macros 2021-02-27 17:11:54 +01:00
Fabian Dill bda86a65f7 Add Grimmkin Flames logic 2021-02-27 16:27:35 +01:00
Fabian Dill abcc2690f0 Add "Fake" (Randomizer-only) Hollow Knight items 2021-02-26 21:03:16 +01:00
Fabian Dill e5e70db380 improve set_getters a bit 2021-02-25 04:14:46 +01:00
Fabian Dill f19291aaed Remove Fake Hollow Knight Items and Locations
Add GetDataPackage Network system
2021-02-25 02:07:28 +01:00
Fabian Dill 499f67c586 HK Logic 2021-02-24 06:02:51 +01:00
Fabian Dill e60ae897b4 Allow HK items in shops and allow settings local/non-local items for HK 2021-02-24 00:36:37 +01:00
Fabian Dill a248fd5f94 add a HK game completion rule 2021-02-22 11:18:53 +01:00
Fabian Dill 8a395a3021 update guis 2021-02-21 20:37:43 +01:00
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
Fabian Dill 96dfccdbfc set correct version in multidata 2021-02-19 13:47:25 +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 3d81f0cca7 update after merge from /main 2021-01-30 23:43:15 +01:00
Fabian Dill 2553b1d2ee Merge branch 'main' into breaking_changes 2021-01-30 23:40:25 +01:00
Fabian Dill 28c12054dd update to Shops release 2021-01-30 23:37:35 +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 c604dfe509 move networks commands to [str, Optional[dict]] across the board
and some other updates
PrintHTML is an experiment and is unlikely the solution I'll go with
2021-01-21 23:37:58 +01: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 7333a15f1f handle merge conflicts after plando update 2021-01-17 06:54:38 +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 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 4de64eab84 update Options system #2 2020-10-24 19:46:13 +02:00
Fabian Dill 1d58f54101 move ALTTP to its own world folder 2020-10-24 05:38:56 +02:00