diff --git a/README.md b/README.md index bae6980..fddbe19 100644 --- a/README.md +++ b/README.md @@ -11,11 +11,6 @@ Goals: a full combat system including combat events, and - .NET 10 SDK - `protoc` (only to regenerate the protocol) -Everything the server reads but does not own lives in `stuff/` and is not tracked here: the -game data it merges (`stuff/turnbasedgamedata/ExcelOutput` from Dimbreath and -`stuff/pearl-sr/resources` for the beta overlay), the proto dump, and the reference servers. -`Data.Sources` in `config/config.json` points at the first two, in priority order. - ## Running ``` @@ -27,66 +22,18 @@ Or just `run.bat`. ## What works -- Teams: six squads, join/quit/swap/leader/rename/switch, virtual lineups for challenges, - shared technique points (Phainon and Himeko Nova raise the cap), all remembered between runs. -- Overworld fights: hitting a monster resolves its own stage for your world level, the attacker's - element breaks toughness on entry, ambushes work, destructible props break, and fodder-clearing - techniques (Acheron, Phainon, Silver Wolf 999, Himeko Nova) skip the fight. Won fights remove - the monsters; HP and energy carry over until you teleport. -- Calyxes, Stagnant Shadows / Caverns, Battle College (trial characters), story stages by event. -- Memory of Chaos, Pure Fiction, Apocalyptic Shadow with both nodes, scores, stars, records; Anomaly - Arbitration with saved mob teams, hard mode and settle screens. Every floor reports as cleared so - none sit locked behind the one before them; set `GameServer.UnlockAllChallenges` to false to - report only what has actually been played. -- Position, paths, gender, head icon, server-side settings and challenge records persist in - `data/player.json`. +- WIP ## Chat commands -The friend list has one entry, CapySR. Message it: - -| command | effect | -|-----------------------------|-----------------------------------------------------| -| `/help` | list the commands | -| `/tp [teleportId]`| travel to a map entrance | -| `/unstuck` | respawn at the current map's anchor | -| `/heal` | full health and technique points | -| `/mp [n]` | set technique points | -| `/wl <0-6>` | set the equilibrium level (monsters scale with it) | -| `/stage ` | the next fight you start plays that stage | -| `/sync` | reload `freesr-data.json` now | -| `/lineup`, `/pos`, `/clear` | show the team, show where you are, clear the map | +- WIP ## srtools -Point srtools at `http://127.0.0.1:21000/srtools` and upload. The game server watches -`data/freesr-data.json` and pushes the new roster, gear and teams to a logged-in client without a relog. - -`GameServer.BattleSource` in `config/config.json` decides what the uploaded `battle_config` drives: - -| value | behaviour | -|---------------------|---------------------------------------------------------------| -| `auto` (default) | every non-challenge fight plays the srtools battle | -| `srtools` | the same, and never falls back to the encounter's own stage | -| `stage` | everything plays its real stage | - -So a calyx runs whatever stage `freesr-data.json` names. That is how an older Apocalyptic -Shadow, Pure Fiction or Memory of Chaos floor gets replayed, while F4 keeps the current -rotation. Challenges always play their own stage. +- WIP ### Hotfix URLs -Unknown versions are fetched from the official dispatch once and cached in -`config/versions.json`. A beta dispatch stops answering as soon as its window closes, so a -client newer than anything cached cannot be looked up by anyone any more. When that happens -the closest older build of the same channel is lent out, which keeps a packaged client -booting: an empty `ex_resource_url` hangs it at about 99% before it ever reaches the game -server. Turn `Hotfix.EnableDesignDataUpdate` off while a version is running on borrowed urls, -or it will try to download design data that does not match its build. - -The version a client will ask for, and its dispatch seed, are in -`StarRail_Data/StreamingAssets/BinaryVersion.bytes`. - For OS: ```json { @@ -105,23 +52,12 @@ For OS: dotnet test tests/CapySR.Tests ``` -`FlowTests` drive a real gateway end to end: login, team edits, an overworld fight, technique -points, and a two-node Memory of Chaos floor. - ## Regenerating the protocol ``` dotnet run --project tools/CapySR.ProtoGen ``` -The generated protocol is committed, so this is only needed after a proto dump changes. Clone -[TurnBaseGameProto](https://github.com/Mar7thLover/TurnBaseGameProto) into `stuff/` first. - -Reads `stuff/TurnBaseGameProto/Raw/StarRail.proto`, resolves the 11 duplicate type names the dump's -translation pass produces, runs protoc, and writes `CmdId.g.cs` / `CmdIdTable.g.cs`. Duplicate -resolution is scored against the `CmdXxxType` service enums and `packetIds.txt`; deliberate calls -live in `DuplicateResolver.Overrides`. - ## Credits - capyb2222 - Various other server reimplementation.