diff --git a/README.md b/README.md index 6501ad3d..12007e6a 100644 --- a/README.md +++ b/README.md @@ -49,33 +49,7 @@ newserv is many things - a server, a proxy, an encryption and decryption tool, a With that said, I offer no guarantees on how or when this project will advance. Feel free to submit GitHub issues if you find bugs or have feature requests; I'd like to make the server as stable and complete as possible, but I can't promise that I'll respond to issues in a timely manner. If you feel like contributing to newserv yourself, pull requests are welcome as well. -Current known issues / missing features / things to do: -- Implement the rest of PSOBB. Major areas of work: - - Find any remaining mismatches in enemy IDs / experience - - Support EXP multipliers - - Sale prices for non-rare weapons with specials are computed incorrectly when buying/selling at shops - - Replace enemy list, game episode, etc. with quest data when loading a quest - - Implement trade window - - Fix some edge cases on the BB proxy server (e.g. make sure Change Ship does the right thing, which is not the same as what it should do on other versions). -- Extension data in inventories is not handled properly. -- PSOX is not tested at all. -- Implement server-side drops on non-BB game versions. -- Find a way to silence audio in RunDOL.s. Some old DOLs don't reset audio systems at load time and it's annoying to hear the crash buzz when the GC hasn't actually crashed. -- Implement private and overflow lobbies. -- Enforce client-side size limits (e.g. for 60/62 commands) on the server side as well. (For 60/62 specifically, perhaps transform them to 6C/6D if needed.) -- Encapsulate BB server-side random state and make replays deterministic. -- Implement character and inventory replacement for battle and challenge modes. -- Implement choice search. -- Write a simple status API. -- Implement per-game logging. -- Episode 3 - - Fix behavior when joining a spectator team after the beginning of a battle. - - Disconnecting during a match turns you into a COM if there are other humans in the match, even if the match is part of a tournament. This may be incorrect behavior for tournaments. - - Disconnecting during a tournament when there are no other humans in the match simply cancels the match (so it can be replayed) instead of forfeiting, which is almost certainly incorrect behavior. (Then again, no one likes losing tournaments to COMs...) - - Tournament deck restrictions aren't enforced when populating COMs at tournament start time. This can cause weird behavior if, for example, a COM deck contains assist cards and the tournament rules forbid them. - - Implement 3v1 battles. -- Code style - - Add default values in all command structures (like we use for Episode 3 battle commands). +See TODO.md for a list of known issues and future work. ## Compatibility diff --git a/TODO.md b/TODO.md new file mode 100644 index 00000000..447357fb --- /dev/null +++ b/TODO.md @@ -0,0 +1,49 @@ +## General + +- Extension data in inventories is not handled properly +- Test PSOX (blocked on Insignia private server support) +- Implement server-side drops on non-BB game versions +- Find a way to silence audio in RunDOL.s +- Implement private and overflow lobbies +- Enforce client-side size limits (e.g. for 60/62 commands) on the server side as well +- Encapsulate BB server-side random state and make replays deterministic +- Implement character and inventory replacement for battle and challenge modes +- Implement choice search +- Write a simple status API +- Implement per-game logging +- Add default values in all command structures (like we use for Episode 3 battle commands) +- Check for RCE potential in 6x6B-6x6E commands + +## Episode 3 + +- Fix behavior when joining a spectator team after the beginning of a battle +- Figure out why spectators crash during replays sometimes +- Make disconnecting during a tournament match cause you to forfeit the match +- Enforce tournament deck restrictions (e.g. rarity checks, No Assist option) when populating COMs at tournament start time + +## PSOBB + +- Find any remaining mismatches in enemy IDs / experience +- Support EXP multipliers +- Sale prices for non-rare weapons with specials are computed incorrectly when buying/selling at shops +- Replace enemy list, game episode, etc. with quest data when loading a quest +- Implement trade window +- Fix some edge cases on the BB proxy server (e.g. Change Ship) +- Implement less-common subcommands + - 6xAC: Sort inventory + - 6xC1, 6xC2, 6xCD, 6xCE + - 6xCC: Exchange item for team points + - 6xCF: Restart battle + - 6xD0 + - 6xD2 + - 6xD5: Exchange item in quest + - 6xD6 + - 6xD7: Paganini Photon Drop exchange + - 6xD8: Add S-rank weapon special + - 6xD9: Momoka item exchange + - 6xDA: Upgrade weapon attribute + - 6xDE: Good Luck quest + - 6xDF + - 6xE0 + - 6xE1: Gallon's Plan quest +- Team commands