Commit Graph

407 Commits

Author SHA1 Message Date
Fabian Dill 71ea8d7148 Multiserver: provide compat for 0.2.3 and somewhat older multidata 2022-02-19 17:50:56 +01:00
CaitSith2 fd8cace362 Reworked hints for item_link 2022-02-18 13:03:55 -08:00
Fabian Dill 14448ad97e Multidata: allow SoE/SM/LttP to connect via player name for use in Tracker/Text clients 2022-02-09 21:06:50 +01:00
black-sliver ed607bdc37 Fix wrong message when loading apsave
from doubling received_items that happened when moving from world-based to client-based remote_items
2022-02-06 12:28:46 +01:00
Fabian Dill 279b682ac2 ItemLink: hopefully fix coop functionality 2022-02-05 17:35:12 +01:00
Fabian Dill 28201a6c38 Core: implement first version of ItemLinks 2022-02-05 15:49:19 +01:00
Jarno Westhof 9fd6d1b81f [Server] Broadcast hint_cost and location_check_points update changes via RoomUpdate 2022-02-03 13:09:59 +01:00
Fabian Dill dc4b064c73 Options: change displayname to display_name 2022-02-02 16:29:29 +01:00
Fabian Dill 6333cc3bea Server: optimize send_multiple 2022-01-31 19:05:00 +01:00
N00byKing 00bf9c569a Add send_multiple command 2022-01-31 18:56:46 +01:00
Fabian Dill e0628ec6c9 WebHost: correct some texts 2022-01-31 10:11:39 +01:00
Fabian Dill 8c638bcfd8 Server: allow LocationScouts to create free hints 2022-01-30 14:14:49 +01:00
Fabian Dill 0bd252e7f5 Server: add slot_info key to Connected 2022-01-30 13:57:12 +01:00
Fabian Dill 25dd89ed17 MultiServer: delete unused function 2022-01-28 09:29:29 +01:00
CaitSith2 6b1c555d38 Fix inconsistency in parameter name now that !hint only hints items, not locations. 2022-01-23 22:09:06 -08:00
black-sliver f0cfe30a36
Move remote_items and _start_inventory from world to client (#227) 2022-01-23 06:38:46 +01:00
Jarno Westhof 929c684977 [Bug] fixed collect 2022-01-21 23:13:14 +01:00
black-sliver 0c46cc6843 Add per-client remote_item settings + TextOnly Tag
* Tracker tag will receive all items via server (including local)
* TextOnly tag will receive no items
* TextClient sends TextOnly tag
* precollected items / start_inventory does not get an "Order received" number anymore
* local items do always get an "Order received" number now
* multisave changed, includes version number now, upgrade works for games (not trackers)
2022-01-21 22:42:59 +01:00
Fabian Dill 80a7e4175b MultiServer: update FuzzyWuzzy to TheFuzz 2022-01-19 06:14:13 +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 5c1d2b3393 Network: unify flags docs and implementation 2022-01-18 06:45:09 +01:00
Fabian Dill 028207022a Factorio: support new colors in-game
Various: cleanup and comments
2022-01-18 06:16:16 +01:00
Jarno Westhof c9fa49d40f
[Network_Item] Add item flags to network item so client can distinct some details (#210) 2022-01-18 05:52:29 +01:00
Fabian Dill e74333cbd3 MultiServer: remove location hinting from !hint and /hint; add /hint_location 2022-01-16 02:20:37 +01:00
Fabian Dill 061de66397 MultiServer: don't mark a slot as having Activity if a location check was done through Collect 2022-01-09 23:15:50 +01:00
Fabian Dill f8893a7ed3 WebHost: check uploads against zip magic number instead of .zip 2022-01-01 17:18:48 +01:00
Fabian Dill 994621372c MultiServer: finish removing prompt toolkit 2021-12-03 05:24:43 +01:00
Fabian Dill 7b0b243607 MultiServer: remove promp_toolkit 2021-11-28 04:06:30 +01:00
Fabian Dill c381df6563 MultiServer: filter new locations via sets, instead of if and only echo new checks 2021-11-23 20:16:48 +01:00
Fabian Dill 26b336d6db MultiServer: fix IncompatibleVersion not triggering 2021-11-22 20:32:59 +01:00
Fabian Dill 50264993b0 MultiServer: allow null exclusions on GetDataPackage 2021-11-21 18:11:51 +01:00
CaitSith2 3d19c39001 Include number of death_link connected clients in status. 2021-11-21 01:37:23 -08:00
Fabian Dill 97f6003582 MultiServer: fix legacy argument passing in websockets 2021-11-15 20:55:21 +01:00
Fabian Dill 650fd5d792 LttP: refine DeathLink handling. 2021-11-11 16:09:08 +01:00
Fabian Dill 43323e59ce Logging Revamp 2021-11-10 15:35:43 +01:00
Fabian Dill ca9bf48ffa Network: document ConnectUpdate 2021-11-08 16:58:41 +01:00
Fabian Dill b9941e40c1 LttP: Allow DeathLink to be adjusted post-gen 2021-11-08 16:34:54 +01:00
Fabian Dill e8639988ce MultiServer: original_cmd to InvalidPacket 2021-11-08 16:07:37 +01:00
Fabian Dill 666e3b5333 MultiServer: add JSONMessagePart["player"] 2021-11-07 14:42:05 +01:00
Fabian Dill 2b124aaff4 MultiServer: add time to RoomInfo 2021-11-07 11:37:58 +01:00
Fabian Dill f43475f33b MultiServer: declare spectators as default goal-finished 2021-11-06 08:19:10 +01:00
Fabian Dill e756a77c70 MultiServer: implement Tracker tag
Docs: add InvalidPacket
Docs: add known Tags
Docs: add DeathLink
LttPClient: potentially fix DeathLink chaining
2021-11-04 13:23:13 +01:00
Fabian Dill bcfa5d0a7e MultiServer: remove accidental loop from !status 2021-11-04 09:01:14 +01:00
Fabian Dill 45f92536a6 MultiServer: add !status command 2021-11-04 08:57:27 +01:00
Sandra cb8da2e757 Marks player names with a pair of asterisks if they have completed their goal. 2021-11-03 04:56:54 +00:00
Fabian Dill e64d5c5f17 Network: implement new packet: ConnectUpdate 2021-11-01 20:00:55 +01:00
Fabian Dill 4472ef20fe Factorio: add DeathLink option 2021-10-25 09:58:08 +02:00
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