Commit Graph
8542 Commits
Author SHA1 Message Date
Bryce Wilson c6697337bb Pokemon Emerald: Fix dexsanity encounters using non-enabled encounter types for logical access (#6161) 2026-09-28 01:29:56 +02:00
Silvris 6f3cd85690 Options: add function to validate custom text in TextChoice during from_text (#6205) 2026-09-28 01:28:55 +02:00
Silent 25a08b47cc TUNIC: Add launcher options (#6199) 2026-09-28 01:27:34 +02:00
Silent bce01b9325 TUNIC: Add fuse locations to Universal Tracker map integration (#6198) 2026-09-28 01:26:42 +02:00
shananas c1980f322a KH2: Keyblade Min Max Clarification (#6188)
Actually swap option values for keyblade min an max to show correctly in spoiler log.
And clarify in the warning the two values get swapped. (same as bounties but not lucky emblems)
2026-09-28 01:25:28 +02:00
mkoertshuis aa8e057fc5 Jak1: use Utils.user_path for consistant user data (#6150) 2026-09-28 01:24:28 +02:00
Duck ac7bc5b6a2 Core: Make manifest error a messagebox and show which world (#6133) 2026-09-28 01:22:53 +02:00
Nicholas Saylor 46c4110882 Core, Tests: Update usages of multiworld.get_all_state (#5793) 2026-09-28 01:19:33 +02:00
Scipio Wright 35770fb9a6 TUNIC: Universal Tracker deferred entrances support (#5454) 2026-09-28 01:17:22 +02:00
qwint 9642c15f78 Launcher: Fix loading when an unknown arg is provided (#6451) 2026-09-28 01:16:21 +02:00
Duck 5b47bf9bb4 Launcher: Fix initial position of "Search" text upon loading (#6456) 2026-09-26 05:23:31 +02:00
black-sliverandFabian Dill 5442df64fd MultiServer, customserver: move data package handling, optimize RAM usage (#5981)
* MultiServer, customserver: move data package handling

Create a new class that handles conversion worlds+embedded -> context data.
Create a derived class that uses static_server_data+pony instead.
There is also a not very efficient feature to deduplicate strings (may need perf testing).

By moving code around, we can simplify a lot of the world loading.
Where code lines were touched, some typing and some reformatting was added.
The back compat for GetDataPackage without games was finally dropped.
This was done as a cleanup because the refactoring touched those lines anyway.

Also reworked the per-context dicts and the RoomInfo to hopefully be more efficient
by ignoring unused games. (Generating the list of used games was required for the new
code anyway.)

Side effect of the MultiServer cache: we now load worlds lazily (but still all at once)
and don't modify the games package in place. If needed we create copies.
This almost gets us to the point where MultiServer doesn't need worlds - it still needs
them for the forbidden items.
There is a bonus optimization that deduplicates strings in name_groups that may have bad
performance and may need some perf testing if we run into issues.

* MultiServer: fix string deduplication in data package cache

* MultiServer, customserver: minor formatting fixes

* MultiServer: fix data package cache for missing checksum case

* MultiServer: improve string deduplication in games package cache

* customserver: handle missing checksum in datapackage cache

* customserver: typing cleanup in games package cache

* Test, MultiServer, customser: add tests for games package cache

* Test, MultiServer: reorder imports

Hopefully this fixes the random test failures with pytest-xdist

* customserver: make WebHost import lazy in games package cache

and fix test

* customserver: games package cache: fix py3.11 compat

* MultiServer, customserver: cache: typing improvements

* customserver: cache: reformat

* Test: move customserver tests to not interfere with webhost

* MultiServer, customserver: cache: rename module

* Multiserver: better error message for missing Datapackage

* customserver: cache: invert if for readability

* customserver: optimize non_hintable_names

* Use an empty frozenset singleton
* Only include non-empty sets in static_server_data
* Only prefill dict with played games

This should save ~2-4KB per room and slightly speedup lookup.

---------

Co-authored-by: Fabian Dill <[email protected]>
2026-09-24 23:33:30 +02:00
Mysteryem db1d85603c Core: Restrictive fill in batches to reduce state sweeping costs (#3872)
This patch breaks up fill_restrictive to fill in batches of items at a time. Each batch creates its own batch_base_state, and additionally a sweep state created from the batch's base state (_partial_exploration_state). The advantage to this is that each maximum_exploration_state can be created from the batch's _partial_exploration_state, which has already reached many regions and locations, rather than having to sweep from base_state each time.
2026-09-22 18:33:51 +02:00
Ishigh1 2fb9bdadd4 Rule Builder : Made AtLeast a dataclass (#6421) 2026-09-22 15:33:55 +02:00
Katelyn Gigante afeb1fbe9f Core: Add .apworlds to loading screen (#6460) 2026-09-22 05:30:50 +02:00
c7459844c0 Launcher: fix for more terminal on linux (#6436)
* Add check for cosmic terminal and use different arguments if so

* Changed check for terminal to be strictly against executable name instead of path

based on this comment https://github.com/ArchipelagoMW/Archipelago/pull/6436#discussion_r3994140550

* Add `ptyxis` to list of moddern terminals

Co-authored-by: Duck <[email protected]>

* Changed `-e` terminal launch method to use `sh`

This standardizes the environment in which archipelago components launch and fixes launching with `zutty`

* Properly import pathlib

* Added comment detailing what `modern_terminals` is

* Refactored launching in terminal to new function in utils

* Optimised imports in Launcher.py

* Revert "Refactored launching in terminal to new function in utils"

This reverts commit 43367987da.

* Fixed unintentional cleanup in Utils.py

* Simplify check for terminals

Co-authored-by: Duck <[email protected]>

* Fully import pathlib

* Fix spelling mistake

* added gnome-terminal to list of modern_terminals

* added cosmic-term and ptyxis as fallback terminals

* Changed terminal search to add more terminal names easier

also included `alacritty` and `kitty`

* Check xterm terminal last

Also stores the list of terminals in tuples

Co-authored-by: black-sliver <[email protected]>

* Add type hint to terminal variable

Co-authored-by: black-sliver <[email protected]>

---------

Co-authored-by: Osiris32-and-a-half <[email protected]>
Co-authored-by: Duck <[email protected]>
Co-authored-by: black-sliver <[email protected]>
2026-09-21 23:28:53 +02:00
BadMagic100 90ea894457 docs: apquest: make it clear that launcher components are optional (#6288)
* Make it clear that launcher components are optional

* Update comment for clarity on launcher components
2026-09-21 00:36:09 +02:00
Duck fe8489be8a SM64: Disable default tests for flaky move rando options (#6457) 2026-09-20 22:59:19 +02:00
Fabian Dill 5b33339e62 Kingdom Hearts 2: fix sending already checked locations (#6411) 2026-09-20 22:50:00 +02:00
Fabian Dill f16917f395 The Wind Waker: fix sending already checked and non-existing locations (#6410) 2026-09-20 22:49:16 +02:00
NewSoupVi 527f1195c9 MultiServer: Correct Bounce Target logic, add unit tests (#6417)
* Correct Bounce Target logic, write unit tests

tmp

* that is not correct

* What was I smoking

* explicitly document None

* What was I smoking

* fix weakref syntax

* ruff

* fix magicmoc

* Address Berserker's comments

* comment

* consistently use self.assertEqual

* make slot 2 on team 3 not use deathlink to test different tags for the same slot on different teams

* Improve error message
2026-09-20 18:47:27 +02:00
James White e0b6083384 MMBN3: Handle timeouts on dual stack networks by catching OSError (#6301) 2026-09-12 10:20:40 +02:00
Duck 4cced3d35a Tests: Remove unneeded world exclusions (#6396) 2026-09-11 19:19:05 +02:00
qwint 47a6d6de64 BHC: don't override --connect when manifest has empty server (#6435) 2026-09-11 18:36:59 +02:00
Seldom 5a5bcf4527 Terraria: transfer maintainership to Desperandos (#6170) 2026-09-11 10:53:31 +02:00
qwint 1e1efa3f5c Wargroove: actually import Items (#6422) 2026-08-31 01:39:05 +02:00
black-sliver 1d8a6a556f Test: flask duplicate route is now a ValueError (#6380) 2026-08-26 02:15:24 +02:00
agilbert1412 63b8e81632 Stardew Valley: Fixed Artifact spot logic (#6213) 2026-08-25 20:00:21 +02:00
rosen200 cf42061cd4 Wargroove: Add item groups (#6254) 2026-08-25 19:59:22 +02:00
Noa Aarts 94a3981c9e stardew valley: use /explain from universal tracker instead of stardew valley client (#6241) 2026-08-24 02:55:57 +02:00
agilbert1412 4910875df6 Stardew Valley: Apworld Version To 7.4.25 (#6407) 2026-08-23 11:28:43 +02:00
agilbert1412 260b5cbfbc Stardew Valley: Reorganise option groups and visibility a little bit (#6224) 2026-08-22 06:56:54 +02:00
Duck 1db7d33ed4 Core: Fix loading of worlds installed in launcher (#6319) 2026-08-22 05:20:02 +02:00
Duck e4fd85d58f Launcher: Show error message when world fails to load during install (#6292) 2026-08-22 03:08:30 +02:00
shananas 4a3ac718f4 KH2: Make Lucky Emblems behave like bounties and keyblade stats (#6190)
Swap the amount required and avaiable if required is more than avaiable instead of making avaiable equal required
2026-08-22 03:01:48 +02:00
Rob B 8d981a8027 Satisfactory: Fix broken links on the Setup guide (#6110) 2026-08-22 03:00:01 +02:00
Duck f0c21fdadc Core: Update PlandoConnection.Direction to use StrEnum (#5801) 2026-08-22 02:22:37 +02:00
RoobyRoo ca33ebca0d Subnautica: Handle empty filler item weights with specific error (#6361) 2026-08-22 02:10:48 +02:00
shananas 52a7637242 KH2: Prevent the client from crashing if the player duplicated items (#6210) 2026-08-21 23:51:37 +02:00
agilbert1412 eabced5d60 Stardew Valley: Fixed filler buffs only rolling one of each instead of as many as needed (#6293) 2026-08-21 23:50:14 +02:00
threeandthreee 0c9a232fcf Tests: remove exception for LADX in test_itempool_not_modified (#6390) 2026-08-21 23:49:18 +02:00
agilbert1412 3ab4ab54d3 Stardew Valley: Rebalanced a dozen or so meme bundles (#6214) 2026-08-21 23:48:22 +02:00
Gearwcu 90b051a80e Civ6: Update BOOST_TECH_CASTLES (#6270)
Replaced 8 slot government techs with 6 slot
2026-08-19 12:46:56 +02:00
Jérémie Bolduc 9c17dc5d62 The Messenger: Remove connection from Climb Shop to Rocket Maze Checkpoint - #6258 2026-08-18 00:06:01 +02:00
NewSoupVi f2b22781df APQuest: Reimplement Dijkstra by hand (so that it is LLM-free again) (#6315)
* reimplement Dijkstra by hand

* make it so that the player faces the breakable object even if they can't break it

* ruff
2026-08-18 00:00:10 +02:00
NewSoupVi 17f753281f The Witness: Universal Tracker support + Clean up which options actually need to be in slot_data (#5503)
* Re-gen with UT + slim slot_data slightly

* make use of relevance in ut code

* That's not how enums work

* fixup

* more ut compat

* more ut fixup

* more ut fixup

* utils entity hex fixup

* Me when I lie

* Update options.py
2026-08-17 21:45:17 +02:00
NewSoupVi 9ae40fd6e4 MultiServer: Allow "and" chaining of Bounce packet conditions & add teams support (#3845)
* Allow 'and' concatenation of bounce packet conditions

* Docs + small change

* Docs stuff

* update Bounced as well

* lol

* shadowing issue

* Slight rework to allow teams

* teams note

* Make the PR ready

* docs further up too

* Let's not do this actually

* Use operator & don't redefine functions

* team default

* remove unnecessarily added whitespace
2026-08-17 21:31:41 +02:00
SomeJakeGuy bf52661182 MultiServer: reject None targets on Bounce and validate types before sending Bounced (#6397) 2026-08-17 00:04:31 +02:00
James White 21e728c38d CommonClient: reset session state when connecting to a different room or slot (#6231) 2026-08-16 10:24:28 +02:00
Bryce Wilson c6d9411814 BizHawkClient: Fix compatibility for Lua 5.5+ (#6200) 2026-08-16 10:22:31 +02:00