Commit Graph

223 Commits

Author SHA1 Message Date
Fabian Dill 0bd252e7f5 Server: add slot_info key to Connected 2022-01-30 13:57:12 +01:00
Fabian Dill 6210630ce2 Core: increment version 2022-01-30 03:45:21 +01:00
Fabian Dill 1b3b0f199d Generate: improve duplicate key feedback by providing duplicate text, line and column 2022-01-25 04:20:08 +01:00
Robinde67 ad06d9bb4a
Adjuster fixes and added GUI prompt for applying last settings (#173) 2022-01-20 04:19:58 +01:00
Fabian Dill b4f17e67d0 Generate: disallow duplicate mapping keys in input files 2022-01-19 04:26:25 +01:00
Fabian Dill a6cca3094d WebHost: give proper incompatible version error message.. in the future when this is deployed for next time. 2022-01-18 08:23:38 +01:00
Fabian Dill aff9114c35 0.2.3 2022-01-08 16:12:56 +01:00
Fabian Dill 97d6e80556 Bump 2021-12-21 15:31:04 +01:00
Fabian Dill db56f4a6b7 Core: bump version to 0.2.1 2021-12-01 02:39:52 +01:00
Fabian Dill 7b0b243607 MultiServer: remove promp_toolkit 2021-11-28 04:06:30 +01:00
Fabian Dill 9cb24280fa Clients: log exception to logfile 2021-11-17 22:46:32 +01:00
Fabian Dill 2ffa0d0e7f Utils: ignore SSL Cert when getting IP 2021-11-13 23:14:26 +01:00
Fabian Dill fc3b8c40be WebHost: handle SM and SoE 2021-11-13 20:52:30 +01:00
Fabian Dill 4a8ba0575f Post-Merge Cleanup 2021-11-12 14:36:34 +01:00
lordlou 77ec8d4141
Added Super Metroid support (#46)
Varia Randomizer based implementation
LttPClient -> SNIClient
2021-11-12 14:00:11 +01:00
Fabian Dill 43323e59ce Logging Revamp 2021-11-10 15:35:43 +01:00
Fabian Dill 34eba2655e MultiServer: add !collect and collect_mode
CommonClient: make missing and checked location lookups faster
FactorioClient: implement reverse grant technologies for collect/forfeit/coop
2021-10-18 22:58:29 +02:00
Fabian Dill fdb8ae0cb5 FactorioClient: Warn user about the dangers of AppData
Factorio: improve setup guide somewhat
2021-10-16 19:40:27 +02:00
Fabian Dill 81afbb55cf Core: increment version 2021-10-02 07:00:16 +02:00
Fabian Dill 3caf8bc82b WebHost: Allow plando
Maybe move to a different webpage?
2021-09-23 02:29:24 +02:00
Fabian Dill 38b5ee7314 WebHost: working web-gen 2021-09-18 01:02:26 +02: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
espeon65536 51c38fc628
Ocarina of Time (#64)
* first commit (not including OoT data files yet)

* added some basic options

* rule parser works now at least

* make sure to commit everything this time

* temporary change to BaseClasses for oot

* overworld location graph builds mostly correctly

* adding oot data files

* commenting out world options until later since they only existed to make the RuleParser work

* conversion functions between AP ids and OOT ids

* world graph outputs

* set scrub prices

* itempool generates, entrances connected, way too many options added

* fixed set_rules and set_shop_rules

* temp baseclasses changes

* Reaches the fill step now, old event-based system retained in case the new way breaks

* Song placements and misc fixes everywhere

* temporary changes to make oot work

* changed root exits for AP fill framework

* prevent infinite recursion due to OoT sharing usage of the address field

* age reachability works hopefully, songs are broken again

* working spoiler log generation on beatable-only

* Logic tricks implemented

* need this for logic tricks

* fixed map/compass being placed on Serenade location

* kill unreachable events before filling the world

* add a bunch of utility functions to prepare for rom patching

* move OptionList into generic options

* fixed some silly bugs with OptionList

* properly seed all random behavior (so far)

* ROM generation working

* fix hints trying to get alttp dungeon hint texts

* continue fixing hints

* add oot to network data package

* change item and location IDs to 66000 and 67000 range respectively

* push removed items to precollected items

* fixed various issues with cross-contamination with multiple world generation

* reenable glitched logic (hopefully)

* glitched world files age-check fix

* cleaned up some get_locations calls

* added token shuffle and scrub shuffle, modified some options slightly to make the parsing work

* reenable MQ dungeons

* fix forest mq exception

* made targeting style an option for now, will be cosmetic later

* reminder to move targeting to cosmetics

* some oot option maintenance

* enabled starting time of day

* fixed issue breaking shop slots in multiworld generation

* added "off" option for text shuffle and hints

* shopsanity functionality restored

* change patch file extension

* remove unnecessary utility functions + imports

* update MIT license

* change option to "patch_uncompressed_rom" instead of "compress_rom"

* compliance with new AutoWorld systems

* Kill only internal events, remove non-internal big poe event in code

* re-add the big poe event and handle it correctly

* remove extra method in Range option

* fix typo

* Starting items, starting with consumables option

* do not remove nonexistent item

* move set_shop_rules to after shop items are placed

* some cleanup

* add retries for song placement

* flagged Skull Mask and Mask of Truth as advancement items

* update OoT to use LogicMixin

* Fixed trying to assign starting items from the wrong players

* fixed song retry step

* improved option handling, comments, and starting item replacements

* DefaultOnToggle writes Yes or No to spoiler

* enable compression of output if Compress executable is present

* clean up compression

* check whether (de)compressor exists before running the process

* allow specification of rom path in host.yaml

* check if decompressed file already exists before decompressing again

* fix triforce hunt generation

* rename all the oot state functions with prefix

* OoT: mark triforce pieces as completion goal for triforce hunt

* added overworld and any-dungeon shuffle for dungeon items

* Hide most unshuffled locations and events from the list of locations in spoiler

* build oot option ranges with a generic function instead of defining each separately

* move oot output-type control to host.yaml instead of individual yamls

* implement dungeon song shuffle

* minor improvements to overworld dungeon item shuffle

* remove random ice trap names in shops, mostly to avoid maintaining a massive censor list

* always output patch file to folder, remove option to generate ROM in preparation for removal

* re-add the fix for infinite recursion due to not being light or dark world

* change AP-sendable to Ocarina of Time model, since the triforce piece has some extra code apparently

* oot: remove item_names and location_names

* oot: minor fixes

* oot: comment out ROM patching

* oot: only add CollectionState objects on creation if actually needed

* main entrance shuffle method and entrances-based rules

* fix entrances based rules

* disable master quest and big poe count options for client compatibility

* use get_player_name instead of get_player_names

* fix OptionList

* fix oot options for new option system

* new coop section in oot rom: expand player names to 16 bytes, write AP_PLAYER_NAME at end of PLAYER_NAMES

* fill AP player name in oot rom with 0 instead of 0xDF

* encode player name with ASCII for fixed-width

* revert oot player name array to 8 bytes per name

* remove Pierre location if fast scarecrow is on

* check player name length

* "free_scarecrow" not "fast_scarecrow"

* OoT locations now properly store the AP ID instead of the oot internal ID

* oot __version__ updates in lockstep with AP version

* pull in unmodified oot cosmetic files

* also grab JSONDump since it's needed apparently

* gather extra needed methods, modify imports

* delete cosmetics log, replace all instances of SettingsList with OOTWorld

* cosmetic options working, except for sound effects (due to ear-safe issues)

* SFX, Music, and Fanfare randomization reenabled

* move OoT data files into the worlds folder

* move Compress and Decompress into oot data folder

* Replace get_all_state with custom method to avoid the cache

* OoT ROM: increment item counter before setting incoming item/player values to 0, preventing desync issues

* set data_version to 0

* make Kokiri Sword shuffle off by default

* reenable "Random Choice" for various cosmetic options

* kill Ruto's Letter turnin if open fountain
also fix for shopsanity

* place Buy Goron/Zora Tunic first in shop shuffle

* make ice traps appear as other items instead of breaking generation

* managed to break ice traps on non-major-only

* only handle ice traps if they are on

* fix shopsanity for non-oot games, and write player name instead of player number

* light arrows hint uses player name instead of player number

* Reenable "skip child zelda" option

* fix entrances_based_rules

* fix ganondorf hint if starting with light arrows

* fix dungeonitem shuffle and shopsanity interaction

* remove has_all_of, has_any_of, count_of in BaseClasses, replace usage with has_all, has_any, has_group

* force local giveable item on ZL if skip_child_zelda and shuffle_song_items is any

* keep bosses and bombchu bowling chus out of data package

* revert workaround for infinite recursion and fix it properly

* fix shared shop id caches during patching process

* fix shop text box overflows, as much as possible

* add default oot host.yaml option

* add .apz5, .n64, .z64 to gitignore

* Properly document and name all (functioning) OOT options

* clean up some imports

* remove unnecessary files from oot's data

* fix typo in gitignore

* readd the Compress and Decompress utilities, since they are needed for generation

* cleanup of imports and some minor optimizations

* increase shop offset for item IDs to 0xCB

* remove shop item AP ids entirely

* prevent triforce pieces for other players from being received by yourself

* add "excluded" property to Location

* Hint system adapted and reenabled; hints still unseeded

* make hints deterministic with lists instead of sets

* do not allow hints to point to Light Arrows on non-vanilla bridge

* foreign locations hint as their full name in OoT rather than their region

* checkedLocations now stores hint names by player ID, so that the same location in different worlds can have hints associated

* consolidate versioning in Utils

* ice traps appear as major items rather than any progression item

* set prescription and claim check as defaults for adult trade item settings

* add oot options to playerSettings

* allow case-insensitive logic tricks in yaml

* fix oot shopsanity option formatting

* Write OoT override info even if local item, enabling local checks to show up immediately in the client

* implement CollectionState.can_live_dmg for oot glitched logic

* filter item names for invalid characters when patching shops

* make ice traps appear according to the settings of the world they are shuffled into, rather than the original world

* set hidden-spoiler items and locations with Shop items to events

* make GF carpenters, Gerudo Card, Malon, ZL, and Impa events if the relevant settings are enabled, preventing them from appearing in the client on game start

* Fix oot Glitched and No Logic generation

* fix indenting

* Greatly reduce displayed cosmetic options

* Change oot data version to 1

* add apz5 distribution to webhost

* print player name if an ALttP dungeon contains a good item for OoT world

* delete unneeded commented code

* remove OcarinaSongs import to satisfy lint
2021-09-02 14:35:05 +02:00
Fabian Dill ca3e01b15e LttPClient: prevent crash when trying to access sys.stdin 2021-09-01 17:56:19 +02:00
Fabian Dill de567cc701 LttP: Move more functionality into ALttPItem from Item
LttP: More efficiently build !hint entrance info
LttP: More efficiently check for and build Big Bomb Shop playthrough path
2021-08-28 12:56:52 +02:00
Fabian Dill aec39c919c Minecraft: add missing minecraft defaults 2021-08-15 02:32:36 +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 4b38cb4c2e Setup: various small adjustments and fixes 2021-08-06 19:33:17 +02:00
Fabian Dill abf4e82737 Move Factorio data from /data/factorio to /worlds/factorio/data, to contain it in its world folder 2021-07-31 15:13:55 +02:00
Fabian Dill f5c62a82ac some post unification cleanup. 2021-07-31 01:40:27 +02:00
Fabian Dill f232f74246 Version: 0.1.6 start 2021-07-27 14:59:24 +02:00
Fabian Dill 78f565c706 renamed /hosted/ to /room/
remove no longer used options
allow loading of json data files from webhost when it gets run by gunicorn and similar
2021-07-24 14:08:45 +02: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 573fde4bbc Merge together FactorioClient.py and FactorioClientGUI.py
Add cmd arguments
Add kivy style file, allowing users to modify it
2021-07-19 21:52:08 +02:00
Fabian Dill f456dba993 newstyle DataPackage. Both versions in merged format for compatibility for now. 2021-07-12 18:05:46 +02:00
Fabian Dill 4884184e4a fix autolauncher import 2021-07-09 22:47:35 +02:00
Fabian Dill 4c7ef593be Some optimizations 2021-07-09 17:44:24 +02:00
Fabian Dill 9db506ef42 Factorio: recipe randomization (rocket-part and science-packs only for now) 2021-07-07 10:14:58 +02:00
Fabian Dill 80a5845695 LttP: Move over to SNI 2021-07-07 03:45:27 +02:00
Fabian Dill 0a64caf4c5 add Factorio world gen settings 2021-07-02 01:29:49 +02:00
Fabian Dill eee6fc0f10 increment version 2021-07-01 21:18:08 +02:00
Fabian Dill a08d7bb1b2 Settings: add requires 2021-06-18 22:15:54 +02:00
Fabian Dill 15bd79186a remove player_name feature in MultiMystery
MultiMystery is slated to be integrated into Mystery and the auto-launch feature is not maintainable for a growing games list
2021-06-06 18:12:19 +02:00
CaitSith2 7e599c51f8 Make defaults for missing options in host.yaml consistent. 2021-06-05 21:15:54 -07:00
CaitSith2 6ccb9d2dc2 Fix adjuster reference 2021-06-05 13:58:59 -07:00
Fabian Dill 252bb69808 FactorioClient: Read Bridge file after a server log indicates that the file was written 2021-05-25 01:03:04 +02:00
Fabian Dill 1f17aa394e allow uploading of Factorio mods 2021-05-16 22:59:45 +02:00
Fabian Dill a231850911 Make hint costs relative 2021-05-11 23:08:50 +02:00
Fabian Dill 37755cd362 Factorio: Automatically find and force create bridge file 2021-05-09 16:49:47 +02:00
Fabian Dill 212abc2b5a increment version 2021-05-08 13:42:18 +02:00
Fabian Dill 60f64cc46b rename get_location_name_from_address to get_location_name_from_id 2021-04-28 15:48:11 +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 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 6567f14415 add log_network Server argument 2021-04-07 02:37:21 +02:00
Fabian Dill 20b72369d8 allow basic WebHost functionality to work 2021-04-04 03:18:19 +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 641dbcb138 Make sprite pool in patch prompt show up as a weighted pool. 2021-03-30 09:28:28 -07:00
CaitSith2 83b8858df3 Include sprite_pool in whitelisted adjust wanted question 2021-03-27 07:20:00 -07:00
CaitSith2 df0b98975d Add sprite pool options to gui/adjuster 2021-03-27 07:12:08 -07:00
Fabian Dill 25f234dff0 Reduce chance that shop_slot_shuffle produces empty slots, at the cost of cpu time. 2021-03-26 13:23:17 +01:00
CaitSith2 4d99bb1429 Allow setting of Glitching to Triforce from ganon in host.yaml. 2021-03-22 13:14:19 -07:00
Chris Wilson 37d33b19fc Update node.js dependencies for WebUI 2021-03-21 12:18:17 -04:00
Fabian Dill 38a0a3f15e whitelist CLientStatus 2021-03-19 04:17:26 +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 cd5696527d some er layout group fixes 2021-03-07 20:11:36 +01: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 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 f19291aaed Remove Fake Hollow Knight Items and Locations
Add GetDataPackage Network system
2021-02-25 02:07:28 +01:00
Fabian Dill cbbdb2948d attach command to args dict 2021-02-21 23:46:05 +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 12222d5a4c Split adjuster into own program 2021-02-19 19:08:11 +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 cf49cd5e4b Mark Advancement items in the client 2021-02-03 03:19:25 +01:00
Fabian Dill b78f852579 reduce prices of ammo and ammo capacity upgrades, make heart container actually 4X a heart piece and reduce progression item price slightly 2021-01-31 06:47:57 +01:00
Fabian Dill 9386a9c220 Update Menus 2021-01-24 21:58:26 +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 2a0d1962f1 Tag version required for sending items out of shops 2021-01-09 18:11:24 +01:00
Fabian Dill d80939480b fix some merging 2021-01-03 14:41:21 +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 b7f41e8991 increment version 2021-01-02 23:03:48 +01:00
Fabian Dill f3b6be2b20 Item Plando Support 2021-01-02 12:49:43 +01:00
Fabian Dill e8fd575379 tile_shuffle option no longer requires Enemizer, document it as such
also shuffle things around in gui.py
2020-12-29 19:59:20 +01:00
Fabian Dill e25a03173b Implement "minimum version" checks into server and clients 2020-12-29 19:23:14 +01:00
Fabian Dill c53798bdf8 increment version 2020-12-06 14:40:57 +01:00
Fabian Dill 74cf51c20b create sprite directory if it doesn't exist 2020-11-30 21:34:40 +01:00
Fabian Dill 60e20b7844 Merge remote-tracking branch 'origin/master' 2020-11-30 19:34:49 +01:00
Fabian Dill ddb8a91e5f increment version to 3.4.0 2020-11-30 19:34:42 +01:00
CaitSith2 f9a786e3f5 blacklist doors options from being warned about on master. 2020-11-30 07:43:13 -08:00
Fabian Dill b5e80d1f87 remove no longer used port_forward option 2020-11-30 16:33:54 +01:00
CaitSith2 8c94351d53 Get warnings of options that might not exist in options.yaml 2020-11-28 14:51:13 -08:00
CaitSith2 a269db6ab5 Add doors specific multi mystery default options 2020-11-28 11:39:37 -08:00
CaitSith2 77e74510af Add default options. 2020-11-28 11:34:29 -08:00
Fabian Dill 033307cfc9 Allow just updating sprites and remove old alternate sprite folder 2020-11-11 13:45:21 +01:00