Commit Graph

360 Commits

Author SHA1 Message Date
Fabian Dill c152790011 MultiServer: fix a refactor mistake 2021-10-25 08:24:32 +02:00
Fabian Dill 4e3b8a5178 MultiServer: allow sending another Connect, to update tags, uuid, team etc. 2021-10-25 06:57:06 +02:00
Fabian Dill 6af1f98c88 CommonClient.py UI: add progressbar representing % of checks done.
CommonClient.py UI: add Commands button that points out /help and !help
CommonClient.py: track permissions
CommonClient.py: track missing locations and checked locations in lib
2021-10-22 05:25:09 +02:00
Fabian Dill 8e35372aad Network: add RoomInfo -> Games
Allows clients to only download relevant parts of the datapackage, or to keep ID lookups per-game, and for Bounce to tell if there will be a receiving end.
2021-10-22 04:46:00 +02:00
CaitSith2 17833a0bfc documentation corrections 2021-10-20 12:13:25 -07:00
Fabian Dill be070b79af MultiServer: add !checked command, as it may be useful for coop. 2021-10-20 19:58:07 +02:00
Fabian Dill 6b4bdf569c MultiServer: coop support
Just connect multiple clients to the same slot
2021-10-20 05:56:28 +02:00
Fabian Dill 89c05cfcae FactorioClient: Fix bridge not sending, and limit bridge to run up to once a second.
Setup: Fix LttP Adjuster needs to be installed with generator/lttp
MultiServer: fix duplicate !forfeits
2021-10-19 01:47:11 +02: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 66e198cbb6 Merge branch 'rip_compat' into Archipelago_Main
# Conflicts:
#	MultiServer.py
2021-10-18 08:18:28 +02:00
Fabian Dill b57306beac MultiServer: Don't send password required indicator if the password is empty string (user intention is likely no password) 2021-10-15 22:08:24 +02:00
CaitSith2 ca4b0acd92 Add !hint_location command.
As it turns out, because factorio location names are 100% identical to factorio item names,  it is impossible without a command that explicitly hints locations to hint a specific factorio location, or any other game where location names match item names.
2021-10-09 20:47:12 -07:00
Fabian Dill 62db9ad982 MultiServer: send RoomUpdate -> permissions if permissions change 2021-10-09 15:24:08 +02:00
Fabian Dill f56bf0db73 MultiServer: remove legacy datapackage keys
MultiServer: remove warning about legacy datapackage use
MultiServer: remove legacy permission flags
Options: add "random" option to all Choices
LttP: remove random special handling from HeartColor
2021-09-30 13:22:25 +02:00
Fabian Dill 952a155003 MultiServer: move permissions to an IntEnum 2021-09-26 09:06:12 +02:00
Fabian Dill 8e569a1d1f AutoWorld: split remote_start_inventory out from remote_items 2021-09-23 03:48:37 +02:00
Fabian Dill b780257098 MultiServer: fix IgnoreGame missing 'not' 2021-09-17 04:35:38 +02:00
Fabian Dill b82e3f2a8a MultiServer: Split InvalidSlot out into InvalidGame and document all error codes. 2021-09-17 04:32:09 +02:00
Fabian Dill 071b0eeb77 MultiServer: add datapackage legacy warning 2021-09-11 22:37:24 +02:00
Fabian Dill 411d4434a3 MultiServer: update to websockets 10 and implement new websockets.broadcast 2021-09-09 18:56:52 +02:00
Fabian Dill 01f1545b3e AutoWorld: add forced_auto_forfeit and set it for StS 2021-08-31 16:04:54 +02:00
Fabian Dill f4f043ac87 MultiServer: categorize methods 2021-08-26 16:19:37 +02:00
Fabian Dill bb15d0636e Network: implement Bounce and Bounced 2021-08-02 01:35:24 +02:00
Fabian Dill 2cc7d8395b MultiServer: fix loading old savegames 2021-08-01 22:47:56 +02:00
Fabian Dill 2f2e039356 MultiServer: Limit !hint to a single new result if costs are on. 2021-08-01 17:09:10 +02:00
Fabian Dill 0cd388ca66 MultiServer: seeded !hint selected 2021-08-01 17:02:38 +02:00
Fabian Dill 7ef1fe81f6 MultiServer: move !hint point counting to end of message 2021-08-01 16:48:25 +02:00
Fabian Dill 4dde466364 MultiServer: print which game is being played. 2021-07-29 16:21:11 +02:00
black-sliver eb0e5b7438 MultiServer: don't extract .zip 2021-07-27 16:01:55 +00:00
Fabian Dill d2c420a1fd fix MultiServer file dailog ending targeting 2021-07-25 03:17:22 +02:00
Fabian Dill fc7d37def4 MultiServer.py: when loading a .zip, create the .archipelago next to it to consistently load the same savegame. 2021-07-23 02:27:45 +02:00
Fabian Dill f6b3dfe5ba MultiServer: allow loading a .zip containing a .archipelago directly. 2021-07-23 02:19:41 +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 bceb8540a1 assorted fixes 2021-07-20 21:19:53 +02:00
Fabian Dill 54b3a57f46 fix GetDataPackage exclusions 2021-07-14 10:35:00 +02:00
Fabian Dill 4f998a6880 Documentation: now in repository. Programming documentation should be in /docs, player/user documentation should be in /WebHostLib/static/assets/tutorial.
Network: implement InvalidPacket, remove InvalidArguments and InvalidCmd
Datapackage: implement per-game versions and per-game package retrieval
2021-07-14 10:02:39 +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 50a21fbd74 MultiServer: remove message that could never trigger in current protocol 2021-07-12 15:40:31 +02:00
Fabian Dill 768ae584d3 AutoWorld: add hint_blacklist, automatically generated all_names
MultiServer: revamp hint commands with AutoWorld
2021-07-12 15:33:20 +02:00
Fabian Dill 9821e05386 Fix: When sending items via send or getitem, only consider items that belong to that world
Fix: Allow cheat-sending items into unconnected slots
2021-07-12 14:35:44 +02:00
Fabian Dill 60972e026b send packed NetworkItem in PrintJSON 2021-06-30 20:57:00 +02:00
Fabian Dill 4d4af9d74e WebHost: Guard each Room via file-lock 2021-06-29 03:11:48 +02:00
Fabian Dill f870bb3fad MultiServer:
implement a hint recheck that triggers on get_save()
Still torn if I want a single hint list per team and filter on demand, or have filtered lists and re_check on demand.
2021-06-25 21:04:37 +02:00
Fabian Dill f4a2f344a7 format MultiServer.py 2021-06-19 03:03:06 +02:00
Fabian Dill a08d7bb1b2 Settings: add requires 2021-06-18 22:15:54 +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 b2f3fd56f4 bunch of fixes after testing round 2021-05-14 01:25:41 +02:00
Fabian Dill c4ea879651 "precollect" visible Factorio tech tree as hints, so points are never spent on what was visible. 2021-05-13 02:10:37 +02:00
Fabian Dill 8cdf9d2ddc faster .apsave loading and saving 2021-05-13 01:58:53 +02:00
Fabian Dill d5cdff5ec9 filter hints to whom they concern 2021-05-13 01:37:50 +02:00
Kono Tyran f24a81fdaf fix !remaining command to look beyond ALTTP 2021-05-11 21:38:44 +00:00
Fabian Dill a231850911 Make hint costs relative 2021-05-11 23:08:50 +02:00
Fabian Dill f06d160615 don't check the AP tag anymore 2021-05-10 01:18:57 +02:00
Fabian Dill 909172cbad Factorio, Minecraft & Hollow Knight: add startinventory support 2021-05-09 21:22:21 +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
KonoTyran 5087b78c28
fixed !missing to point to location table not item. (#2) 2021-04-28 15:46:54 +02:00
Fabian Dill 2dd6dcab20 remote now unneccessary line 2021-04-17 22:01:34 +02:00
Fabian Dill 4494207717 generalize LocationScout and make LttP remote items break entirely 2021-04-17 22:00:45 +02:00
Fabian Dill 501c55cc26 add per-slot data and embed HK options in it 2021-04-17 21:03:57 +02:00
Fabian Dill 2df7e4e537 add seed_name to multidata and RoomInfo 2021-04-12 09:36:45 +02:00
Fabian Dill 3858a12f26 MultiServer: check for correct game 2021-04-10 21:08:01 +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 443fc03700 Send actual NetworkPlayer on Connected too 2021-04-07 02:49:36 +02:00
Fabian Dill 6567f14415 add log_network Server argument 2021-04-07 02:37:21 +02:00
Fabian Dill 32560eac92 send actual NetworkPlayers 2021-04-07 02:20:03 +02:00
Fabian Dill 20b72369d8 allow basic WebHost functionality to work 2021-04-04 03:18:19 +02:00
Fabian Dill 250099f5fd Small adjustments 2021-04-03 20:02:15 +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 dc73fa0f33 Factorio integration 2021-04-01 11:40:58 +02:00
Fabian Dill 7402143c73 turn it around~ 2021-03-19 04:32:17 +01:00
Fabian Dill cdc330629b allow more HK names in console commands 2021-03-19 04:30:19 +01:00
Fabian Dill 8d6bec8b9a allow cheating Hollow Knight items 2021-03-19 04:21:53 +01:00
Fabian Dill 218fb0298f Some .Net compatibility 2021-03-19 04:14:59 +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 78ba31444e additional cleanup 2021-03-03 01:57:12 +01:00
Fabian Dill 0917f21384 revert PrintJSON to use key data, to match with documented behaviour 2021-03-02 22:36:50 +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 1849693353 Make object hook more dynamic; ignoring unknown arguments 2021-02-28 20:32:15 +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 fe17fc6320 log misunderstood network commands 2021-02-21 23:54:08 +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 1da1e4eac6 Sample implemention of JSONtoTextParser 2021-01-31 11:33:39 +01:00
Fabian Dill 2553b1d2ee Merge branch 'main' into breaking_changes 2021-01-30 23:40:25 +01:00
Fabian Dill c988ec24b6 update item table offsets 2021-01-30 23:40:01 +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
CaitSith2 6163ddd374 Use names listed in Regions.lookup_name_to_id for location names. 2021-01-22 04:40:09 -08:00
CaitSith2 8d63e13ca7 Revert "Multidata is now able to provide items/location IDs to server."
This reverts commit f47a85d435.
2021-01-21 22:43:07 -08:00
CaitSith2 67119f8858 Revert "Get remaining things for better client/server interactions."
This reverts commit 6c1d3cb60d.
2021-01-21 22:41:19 -08:00
CaitSith2 6c1d3cb60d Get remaining things for better client/server interactions. 2021-01-21 16:57:31 -08:00
CaitSith2 f47a85d435 Multidata is now able to provide items/location IDs to server. 2021-01-21 16:23:56 -08:00
CaitSith2 8754c63d4e client/server changes
* Server now includes checked locations as a separate list.
* If client connects to a server that sends checked checks, client can now give accurate information on checked locations, and not show "New Check: seed-unknown-location (total/216)" and instead accurately show "New check: 'seed-known-location' (total_checked/seed_total)"
/missing now accurately reports what was previously checked.
* client now attempts to translate "Unknown Location ID: 'ID'" into an actual location, if server is unaware of the location, but the client is.
2021-01-21 16:21:51 -08: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 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 5afe44f9cb use multidata locations to get missing checks (in server) 2021-01-15 03:22:56 +01:00
Fabian Dill 10b7c83f1d Just use locations in the multidata, not static IDs, for forfeits
Should also work better for *other* games
2021-01-10 14:50:38 +01:00
Fabian Dill 233e9e6208 expand forfeit to forfeit out anything that is in multidata, so forfeits works with not yet implemented locations 2021-01-10 12:52:23 +01:00
Fabian Dill e03841794b Add Client warning when forfeit is set to automatic and client can't send required information 2021-01-04 22:41:18 +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 e25a03173b Implement "minimum version" checks into server and clients 2020-12-29 19:23:14 +01:00
Fabian Dill 5128657349 allow setting remaining_mode from server options 2020-11-30 21:07:02 +01:00
Fabian Dill f56efbc9e3 improve handling of embedded server options:
use whitelist
attempt to set, skip otherwise
attempt to convert data type
2020-11-15 15:21:41 +01:00
CaitSith2 7e3e2134e0 Add option to client for actually forcing item sending safety off. 2020-10-27 16:27:39 -07:00
CaitSith2 66894dbd86 Add further safeties to sending of location checks.
This safety is able to be turned off, but has to be done so on EVERY connection explicitly.
2020-10-27 16:24:21 -07:00
CaitSith2 6ff4b20d81 Only save reported locations that actually exist in the multidata. 2020-10-27 02:20:56 -07:00
CaitSith2 83db79815a Make multiclient/multiserver/tracker keydropshuffle aware 2020-10-27 00:53:32 -07:00
Fabian Dill 1d58f54101 move ALTTP to its own world folder 2020-10-24 05:38:56 +02: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 add0762114 more compat removal 2020-10-18 23:18:54 +02:00
Fabian Dill 94dafa3c55 Open Breaking changes 2020-10-18 23:07:48 +02:00
CaitSith2 119a5a2b66 Allow client side login and remote issuing of server side commands.
Disabled by default. Requires a password to be set for it to be enabled.
2020-09-21 22:11:43 -07:00
CaitSith2 e77cd7c38a Add command to allow or forbid a specific player from using the !forfeit command despite server restrictions on the command.
Allows for allowing a player to forfeit if they are under a time restriction where they have to leave the game, without allowing the command globally.
2020-09-02 02:23:31 -07:00
Fabian Dill bca1a2d9e0 WebHost: Automatic !hint tracking 2020-07-27 19:30:31 +02:00
Fabian Dill 789d0245cc MultiServer: supposed to restart savefile on older formats too 2020-07-24 14:14:45 +02:00
Fabian Dill 88ba7b55d2 Multiserver: [0,1] == (0,1) -> False, turns out. 2020-07-24 14:00:59 +02:00
Berserker66 35e2b2d20d set_save adjustments for older DB savegames 2020-07-22 12:02:09 +02:00
Fabian Dill 78c85cce14 WebHost: List Rooms in a sortable table 2020-07-21 23:15:19 +02:00
Fabian Dill ac238d9b14 WebHost: Don't count exit saving as activity, thereby creating a hosting loop 2020-07-20 14:17:05 +02:00
Fabian Dill 1d036c0d3c add compatibility server setting 2020-07-16 16:57:38 +02:00
Fabian Dill 626b6b0521 fix loading old savegames from ponyorm DB 2020-07-16 02:29:36 +02:00
Fabian Dill 93ecf5988b implement secrets.SystemRandom() for --race 2020-07-14 07:01:51 +02:00
Fabian Dill 59a71dbb05 restore multidata backwards compatibility 2020-07-14 05:06:25 +02:00
Fabian Dill ea9e103cb0 update rom name handling 2020-07-14 04:48:56 +02:00
Fabian Dill ead9a0ef15 use modern formatting for joined message 2020-07-13 03:38:19 +02:00
Fabian Dill baba4b7c02 !hint now properly gives you prior collection info without needing enough to pay for another hint 2020-07-13 03:21:28 +02:00
caitsith2 319a315ec5 Fix !countdown and actually make !options work 2020-07-11 13:20:16 -07:00
Fabian Dill d190fe65c6 webhost update 2020-07-10 17:42:22 +02:00
Fabian Dill f998ae1a09 fix that countdown can get stuck 2020-07-05 21:46:44 +02:00
Fabian Dill 12273c396b add /countdown and !options 2020-07-05 21:45:52 +02:00
Fabian Dill 68e92ae5b4 assign option to correct instance 2020-06-27 16:54:07 +02:00
Fabian Dill de2cb1692e refine option changing 2020-06-27 14:25:46 +02:00
Fabian Dill 12120ac995 implement option changing 2020-06-27 14:16:51 +02:00
Fabian Dill 6f9f5cbe14 Add twitch hyperlinking to webhost 2020-06-27 13:52:03 +02:00
Fabian Dill 46038830c3 fix trailing could not pay notification if there was nothing left to pay for 2020-06-26 07:30:26 +02:00
Fabian Dill 45a24fab27 save client activity data to multisave 2020-06-23 14:12:27 +02:00
Fabian Dill 26eb44ef15 revenge of the player number offset 2020-06-21 17:04:25 +02:00
Fabian Dill 6421a373e1 Webhost Update
introduce a very WIP tracker
Server will try to reuse port and also try to only use one port
2020-06-21 15:32:31 +02:00
Fabian Dill 9e18c6f1cd Database-backed Webhosting 2020-06-20 20:03:06 +02:00
Fabian Dill 7e3ee8101f implement lazy multisave saving using a daemon thread 2020-06-20 15:46:33 +02:00
Fabian Dill facecdf487 implement --auto_shutdown <minutes>, shutting down a multiserver after that many minutes of inactivity
and set WebHost to a default of 6 hours
2020-06-16 11:26:54 +02:00
Fabian Dill bd1c9f896b allow ghosted slots with same ID to be replaced 2020-06-16 01:05:32 +02:00
Fabian Dill 3fbb959622 fix !missing for older clients 2020-06-15 22:15:04 +02:00
Fabian Dill 7353b489ce add available hint points to UI 2020-06-15 06:30:51 +02:00
Fabian Dill c486cd77bb fix missed rename 2020-06-14 04:12:38 +02:00
Fabian Dill ddc7be0794 update webhost 2020-06-13 22:49:57 +02:00
Fabian Dill 5da5847805 allow multiserver to defer to embedded options 2020-06-13 08:37:05 +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 90b24e3d59 alias now goes to 16, same as rom-name. Also improve some docstrings 2020-06-10 06:13:14 +02:00
Fabian Dill 27901008bc fix that hints print already collected items again 2020-06-09 05:22:48 +02:00