Commit Graph

48 Commits

Author SHA1 Message Date
Fabian Dill de31fc320c allow webhost handling of APMC files 2021-05-16 01:16:51 +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 19896e1fae prepare webhost for multi-game per-slot downloads 2021-05-14 15:25:57 +02:00
Fabian Dill 433981fd3d pass explicit seed_name from MultiMystery.py 2021-04-12 09:45:07 +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
CaitSith2 4d99bb1429 Allow setting of Glitching to Triforce from ganon in host.yaml. 2021-03-22 13:14:19 -07:00
Fabian Dill 567954a17f Merge branch 'main' into breaking_changes
# Conflicts:
#	BaseClasses.py
2021-03-06 05:27:16 +01:00
CaitSith2 d09a03aace Rip out unsafe yaml loading. 2021-03-05 11:32:24 -08:00
CaitSith2 6ddfbdf709 Allow pre-rolling yaml settings, and re-using the exact same pre-rolled settings later, for different actual seeds. 2021-03-03 02:20:37 -08: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 f3b6be2b20 Item Plando Support 2021-01-02 12:49:43 +01:00
CaitSith2 8c94351d53 Get warnings of options that might not exist in options.yaml 2020-11-28 14:51:13 -08:00
Fabian Dill b2bbb77470 remove that I can be found on ALTTPR and pep8 reformat MultiMystery.py 2020-11-08 07:31:32 +01:00
Fabian Dill 27971ee6a9 add functionality for async generation to MultiMystery.py 2020-11-08 07:26:50 +01:00
Fabian Dill 4f8c737eec squashed commit of many breaking changes
Dropping Support for Python 3.7; adding support for Python 3.9
2020-10-19 08:26:31 +02:00
Fabian Dill 7c4772cacf Quote mystery files to prevent cmd arg mashing 2020-08-30 03:18:10 +02:00
Fabian Dill a0c4337bac give Mystery.py the create_diff argument, then make MultiMystery.py use them 2020-08-26 22:28:48 +02:00
Fabian Dill 8852ec9a18 make all output paths host.yaml settable
rename itemlist to itempool, as the actual item listing is in items.py
change pedestal text of book of mudora from paradox to hylian for dingusses
2020-08-20 15:43:22 +02:00
Fabian Dill 2338d25b39 expand rom auto_start to be customizable 2020-07-15 17:19:16 +02:00
Fabian Dill a77424d66a missed a rename 2020-06-11 22:19:46 +02:00
Fabian Dill 4125995bdd Adjust output to "BM" (Berserker's Multiworld) to differentiate spoiler logs, roms and server data at a glance
Rename _multidata to .multidata and embed .multidata as MultiServer-openable file into windows registry
2020-06-10 21:25:14 +02:00
Fabian Dill f918efb645 implement skip_playthrough in mystery 2020-05-31 00:28:03 +02:00
Chris a11bc58e7f Add --disable-autohost argument to MultiMystery.py
- If present, MultiMystery will not automatically host the generated game
2020-04-21 00:02:03 -04:00
Fabian Dill 86d585e2d9 introduce multithreading to MultiMystery patch creation
I measured a 100 to 200% improvement in total zip creation speed
2020-04-10 14:27:54 +02:00
CaitSith2 959917bb13
Print host instead of ip address if host is specified. Also embed specified host into bmbp files. (#57) 2020-04-02 19:40:38 +02:00
CaitSith2 412e30fabc
Pr 56 (#56)
* Ignore *.bmbp files

Co-authored-by: Fabian Dill <Berserker66@users.noreply.github.com>
2020-04-02 14:47:46 +02:00
Fabian Dill 8b02103b93 encode port into patch, also reverse defaulting order for server;
cmd args overwrite yaml now
2020-04-02 11:21:33 +02:00
Fabian Dill 031d6823a1 mostly pathing improvements, mostly to benefit linux 2020-03-15 19:32:00 +01:00
Fabian Dill 19f6abc87c fixes #44 2020-03-07 15:50:04 +01:00
Fabian Dill d44acfdaaf implement binary patching for multimystery (for now no gui/cli support) 2020-03-06 00:48:23 +01:00
Fabian Dill 9d54f56ea6 mention the configured rom path in its warning 2020-02-23 17:12:21 +01:00
Fabian Dill 11e1ad6901 some small improvements for mystery 2020-02-23 17:06:44 +01:00
Fabian Dill 5a204a75f5 default to a zipping algorithm that actually finds similarities in roms (~90% file size reduction) 2020-02-21 10:57:57 +01:00
Fabian Dill 0220575c50 Meta-Mystery 2020-02-18 09:14:31 +01:00
Fabian Dill e50b9e5ee2 add zip_spoiler and zip_multidata 2020-02-17 02:09:33 +01:00
Fabian Dill 0986b36b39 remove tautologous if 2020-02-16 09:47:50 +01:00
Fabian Dill 9047ddb479 make player_name logic a bit smarter in MultiMystery.py 2020-02-16 09:44:32 +01:00
Fabian Dill 14e24037a5 împlement optional hint system (defaults to off) 2020-02-09 05:28:48 +01:00
Fabian Dill 8ea3f34898 compile all user starting points 2020-02-02 22:36:55 +01:00
Fabian Dill de6029aa13 default MultiMystery to the python version that launched it. 2020-01-19 19:34:20 +01:00
Fabian Dill b58558eb75 move updater to own module 2020-01-18 15:45:52 +01:00
Fabian Dill 2ff2b5b30c keep MultiMystery.py console open in case of crash, as users typically don't know how to keep a console open 2020-01-17 20:24:21 +01:00
Fabian Dill aa0ac7aea8 update MultiMystery.py to reflect:
merge HintedMultiServer into MultiServer
2020-01-15 00:36:51 +01:00
Fabian Dill b3ec435b7e implement race as an option and cmd argument 2020-01-13 19:47:30 +01:00
Fabian Dill 7cdd12a43c some text updates 2020-01-13 01:58:21 +01:00
Fabian Dill 85a4e9d409 initial upload 2020-01-12 17:03:30 +01:00