* Initializes MMBN3 world with empty files
* Adds item names to item dict
* Adds locations and names
* Adds skeleton of MMBN3Client. Mostly copy pasta from OOT
* Fixed some style and formatting
* More incremental Lua tests
* Adds all locations and checking to Lua connector
* Made class definitions for TextPet Parser
* Begun connecting item delivery system through lua and textpet
* Lua Connection can now send test items
* Item Delivery is now parameterized. Test command can send any chip
* Adds the ability to send non-chip items
* Fixes name errors in python client
* Fixes count for zenny, attempts to fix bugfrags
* Fixes an issue where you always received 255 bugfrags
* Converts zenny and bugfrag amounts to little endian bytecode
* Checks game state before sending chips
Adds debug option to display information overlayed on rom
Fixes chip indexing issue for chips with ids over 255
Minor text fixes
* Adds in some animation reset instructions during item get message
* Stores previously collected item index in save, re-sends missing items
* Adds title screen check before sending locations
Loading items from save could not be done via RAM. Had to be added in
assembly
* Adds progressive undernet check
* Added library for lzss decoding bits of rom
* More progress on parsing text events from ROM
* Adds a way to inject messages into ScriptArchive data structure and generate bytecode
* Adds Item definitions, passes to client
* Adds regions and item collection rules
* Touched up a few names and values that have changed in preparation for the final patching
* Modifying messages via item is now successful
* Added generate_output hook to generate ROM data
* Generates ROM successfully
* Fixes navi cust give index
* Whoops forgot to wrap this in brackets
* Injects extra scripts for undernet rankings
* Programs had ammount and color swapped
* Prompts the user for their username when connecting
* Adds flagClear to the list of commands to avoid overwriting
* Fixes message box crashes and several other multiworld issues
* Fixes IDs and names of several items and locations
* Added .gba to gitignore
* Fixes compatibility after recent rebase
* Fixes some locations and items that are otherwise unobtainable
* Attempts to make a working launcher in the installer
* Creates installer and fixes several inaccessible locations
* Many minor changes to items, locations, and requirements made during testing
* Adds an info page for MMBN3
* Fixes failing tests by removing duplicate IDs and properly marking progression items
* Accidentally forgot to un-remove the thing
* Whoops, changed this by accident
* Updates self.world references to self.multiworld
* Fixes imports to use from imports instead of using the namespace
* Removed some leftover merge artifacts from inno setup
* Puts back that darned signtool line again
* Adds Overworld Metro keys as items
* Adds TamaCode and puts shortcuts behind cyber passes
* Fixes Numberman code 16 check
* Fixes metro access logic and adds text to metro
* Reworks Lua to fix crashing when many items are queued
* Items for other BN3 games for different players are no longer given in the main player's ROM as well
* Fixes incorrect Item ID for ACDC Metro
* Fixes multi-box text messages
* Adds timer before sending an item
* Forgot to remove the second box of SubMems
* Updates patch and lua to prevent softlocks and crashes
* Adds options for extra undernet ranks, exclude jobs
* Extra GigFreez now gives 20 bugfrags
* Additional Progressive Undernets can no longer appear on the WWW Base
* Moves item signal byte to empty area of flags instead of end of RAM
* Adds Chocolate Shop locations and navi chips to fill them
* Fixes save crash, and added chocolates to lua
* Fixes chocolate stand selling out text, removes DrillMan cube in Undernet
* Replaces old messaging system with direct memory manipulation for receiving items
* Removes NDSPY requirements from MMBN3 by manually adapting the GBA's lz10 algorithm
* Fixes the names of Hospital-1 Locations
* Adds Canary Bit to avoid sending checks when title screen check fails
* Gaining a cybermetro pass will now open the shortcut immediately
* Randomizes the two accessible areas of Undernet 7, adds Hammer as item
* Adds new locations to connector lua
* Injects the name of the item into trade quests
* Fixes copy-paste error in docs
* Fixes merge artifacts and depracated code
* Nut-wafer stand now faces Lan the right way after buying
* Removes unused Goal Option and updates the readme to include most recent changes
* Touch-ups and formatting changes
* The Great Fillerization update. Dozens of items changed to Filler
* Replaces instances of Mega Man with MegaMan
* Update worlds/mmbn3/docs/en_MegaMan Battle Network 3.md
Co-authored-by: el-u <109771707+el-u@users.noreply.github.com>
* Update worlds/mmbn3/__init__.py
Co-authored-by: el-u <109771707+el-u@users.noreply.github.com>
* Apply suggestions from code review
Co-authored-by: el-u <109771707+el-u@users.noreply.github.com>
Co-authored-by: SoldierofOrder <107806872+SoldierofOrder@users.noreply.github.com>
* Changes code ordering to suit base class's
* assert_generate now checks for roms. Minor text fixes
* Makes player specific frequency and excluded location options
* Apply suggestions from code review
Co-authored-by: el-u <109771707+el-u@users.noreply.github.com>
* Addresses suggested changes from PR review
* Replaces ndspy lz10 with MIT-compliant nlzss lz10
* apworld compatibility fix for mmbn3_options from utils
* Addressing more comments by el-u
* APworld will now pull patch from zip folder
* Apply suggestions from code review
Co-authored-by: el-u <109771707+el-u@users.noreply.github.com>
* Cleaned up comments for progressive undernet ROM function, moved index list to field to avoid re-initializing
* Removes improper player-indexed location/item dicts, replaces with world member variables
* Avoids redefining list in progressive undernet ROM function
* Filler items can no longer be generated beyond their specified amounts
* Fixes list copying issue with item frequencies
* Adds BN3 Client Generation back into Launcher settings
* Fixes typos causing huge problems
* Fixed non-relative import for apworld
* Removes custom enum implementation that broke pickle
* Displays message when attempting to load an incorrect ROM, will not attempt to patch it
* Filler items can now only be placed once
* Changes path in setup doc to match Lua path changes
* Fixes file extension for MMBN3 file
* Replaces magic number with reference to value in NetUtils
* Moves victory rules to set_rules. Removes commented out code
* Rewrites Lua script to send block of memory
* Fixes off-by-one error in sending bytes for locations
* Fixes issue with invalid characters in text parsing, and WWW monitor text box parsing
* Moves trade text injection to init so it has access to options
* Attempts to split the text boxes for hinted items
* Trade checks now provide hints if the option is set for them
* Fixes escape character issue for BizHawk 2.9.1
Something in Bizhawk lua parsing changed to dislike the escaped tilde.
I'm not even entirely sure why it was escaped in the first place, but
this should fix the compatibility of it.
* Re-adds desk check that it turns out actually does exist
* Updates requirements to mention bizhawk 2.7 instead of 2.3.1
* Fixes off-by-one error in command byte counts
* Fixes program color indices
* Fixes newline PEP violations
* Reverts an accidental whitespace change made to launcher.py
* Fixes URL formatting on link to settings from setup guide
Co-authored-by: Zach Parks <zach@alliware.com>
* Splits several lines in the readme to avoid excessive length
* Fixes formatting and (hopefully) reduces cringe of joke in setup doc
* Removes unnecessary constructor
* Changes item frequency generation to avoid reusing the same references
Co-authored-by: Zach Parks <zach@alliware.com>
---------
Co-authored-by: el-u <109771707+el-u@users.noreply.github.com>
Co-authored-by: SoldierofOrder <107806872+SoldierofOrder@users.noreply.github.com>
Co-authored-by: Zach Parks <zach@alliware.com>
* Core: typing for async_start
* CommonClient: add a framework for clients to subscribe to data storage key notifications
* Core: update version to 0.4.2
* lufia2ac: coop support
Adds Adventure for the Atari 2600, NTSC version. New randomizer, not based on prior works. Somewhat atypical of current AP rom patch games; The generator does not require the adventure rom, but writes some data to an .apadvn APContainer file that the client uses along with a base bsdiff patch to generate a final rom file.
This adds Wargroove to the list of supported games. Wargroove uses a custom non-linear campaign over the vanilla and double trouble campaigns. A Wargroove client has been added which does a lot of heavy lifting for the Wargroove implementation and must be always on during gameplay. The mod source files can be found here: https://github.com/FlySniper/WargrooveArchipelagoMod
Adds Trainersanity option (Each non-scripted trainer has a location check, adding 317 locations)
Adds Randomize Pokedex option. It is required to obtain items from Oak's Aides.
Adds option to add all normal shop items to all normal shops.
Adds DeathLink option.
Adds traps.
Improves Type Chart randomization.
Items can be received during battle.
Stores start inventory in ROM. Only requests remote start inventory if patch is from v1.
Fixes logic bugs.
Various other improvements.
* Factorio: Added ability to chat from within the game.
This also allows using commands such as !hint from within the game.
* Factorio: Only prepend player names to chat in multiplayer.
* Factorio: Mirror chat sent from the FactorioClient UI to the Factorio server.
* Factorio: Remove local coordinates from outgoing chat.
* Factorio: Added setting to disable bridging chat out.
Added client command to toggle this setting at run-time.
* Factorio: Added in-game command to toggle chat bridging setting at run-time.
* .
* Factorio: Document toggle for chat bridging feature.
* (Removed superfluous type annotations.)
* (Removed hard to read regex.)
* Docs/Factorio: Fix display of multiline code snippets.
* First Pass removal of game-specific code
* SMW, DKC3, and SM hooked into AutoClient
* All SNES autoclients functional
* Fix ALttP Deathlink
* Don't default to being ALttP, and properly error check ctx.game
* Adjust variable naming
* In response to:
> we should probably document usage somewhere. I'm open to suggestions of where this should be documented.
I think the most valuable documentation for APIs is docstrings and full typing.
about websockets change in imports - from websockets documentation:
> For convenience, many public APIs can be imported from the websockets package. However, this feature is incompatible with static code analysis. It breaks autocompletion in an IDE or type checking with mypy. If you’re using such tools, use the real import paths.
* todo note for python 3.11
typing.NotRequired
* missed staging in previous commit
* added missing death Game States for DeathLink
Co-authored-by: beauxq <beauxq@users.noreply.github.com>
Co-authored-by: lordlou <87331798+lordlou@users.noreply.github.com>
* Option RangeWithSpecialMax
* amendment to typing in web options
* compare string with number
* lots of work on zillion
* fix zillion fill logic
* fix a few more issues in zillion fill logic
* can make zillion patch and use it
* put multi items in zillion rom
* work on ZillionClient
* logging and auth in client
* work on sending and receiving items
* implement item_handling flag
* fix locations ids to NuktiServer package
* use rewrite of zri
* cache logic rule data for performance
* use new id maps
* fix some problems with the big recent merge
* ZillionClient: use new context manager for Memory class
* fix ItemClassification for Zillion items
and some debug statements for asserts,
documentation on running scripts for manual testing
type correction in CommonContext
* fix some issues in client, start on docs, put rescue and item ram addresses in slot data
* use new location name system
fix item locations getting out of sync in progression balancing
* zillion client can read slot name from game
* zillion: new item names
* remove extra unneeded import
* newer options (room gen and starting cards)
* update comment in zillion patch
* zillion non static regions
* change some logging, update some comments
* allow ZillionClient to exit in certain situations
* todo note to fix options doc strings
* don't force auto forfeit
* rework validation of floppy requirement and item counts
and fix race condition in generate_output
* reorganize Zillion component structure
with System class
* documentation updates for Zillion
* attempt inno_setup.iss
* remove todo comment for something done
* update comment
* rework item count zillion options
and some small cleanups
* fix location check count
* data package version 1
* Zillion can pass unit tests without rom
* fix freeze if closing ZillionClient while it's waiting for server login
* specify commit hash for zilliandomizer package
* some changes to options validation
* Zillion doors saved on multiworld server
* add missing function in inno_setup
and name of vanilla continues in options
* rework zillion sync task and context
* Apply documentation suggestions from SoldierofOrder
Co-authored-by: SoldierofOrder <107806872+SoldierofOrder@users.noreply.github.com>
* update zillion package
* workaround for asyncio udp bug
There is a bug in Python in Windows
https://github.com/python/cpython/issues/91227
that makes it so if I look for RetroArch before it's ready, it breaks the asyncio udp transport system.
As a workaround, we don't look for RetroArch until the user asks for it with /sms
* a few of the smaller suggestions from review
* logic only looks at my locations
instead of all the multiworld locations
* some adjustments from pull request discussion
and some unit tests
* patch webhost changes from pull request discussion
* zillion logic tests
* better vblr test
* test interaction of character rescue items with logic
* move unit tests to new worlds folder
* comment improvements
* fix minor logic issue
and add memory read timeout
* capitalization in option display names
Opa-Opa is a proper noun
* redirect zz stdout to debug
* fix option validation bug making unbeatable seeds
* remove line that does nothing
* attach logic cache to world
Co-authored-by: SoldierofOrder <107806872+SoldierofOrder@users.noreply.github.com>
Co-authored-by: Doug Hoskisson <doughoskisson@novuslabs.com>
* some typing and docs in various parts of the interface
* fix whitespace in docstring
Co-authored-by: black-sliver <59490463+black-sliver@users.noreply.github.com>
* suggested changes from discussion
* remove redundant import
* adjust type for json messages
* for options module detection:
module.lower().endswith("options")
Co-authored-by: black-sliver <59490463+black-sliver@users.noreply.github.com>
SC2 client now relies almost entirely on the map file and server for the locations and just facilitates them, should make it significantly more resilient to objectives being added or removed
* SC2: fix client crash on printjson messages with more [ than ]
* SC2: move text to queue, that actually clears memory
* SC2: Announce which mission is being loaded
Co-authored-by: black-sliver <59490463+black-sliver@users.noreply.github.com>
* fix import order
* lazy import shutil
* lazy import jellyfish (also speed-up by 0.8%, probably because of inlining)
* yaml:
* explicitely call Loader UnsafeLoader
* use CDumper, twice as fast
* stop leaking leak imported names load and load_all
* open_file: use absolute path
* replace quotes in touched code
* add some typing in touched code
* stringify type hinting for non-imports
* %s/.format -> f
* freeze safe_builtins
* remove double-caching in get_options()
* get rid of some warnings