Repository navigation
feat(warps): send the warp list to the open source client - #1504
Draft
pllanosclaria wants to merge 3 commits into
Draft
pllanosclaria wants to merge 3 commits into
pllanosclaria wants to merge 3 commits into
Conversation
…e client The open source client takes its warp list from its data files, which follow Webzen's Season 6. Warps which OpenMU has and Webzen doesn't, like Crywolf and Loren Market, can't be selected there, and the client can't add them to its files because it's used with Webzen's servers, too. WarpListExtended (C2 F5 09) carries the warp list of the server: per warp the index, map, level requirement, costs and the name in the player's language.
When a character enters the game, the server sends its warp list to the open source client (WarpListExtended), so that its warp window offers the warps of the server instead of the ones of its data files. Original clients don't get it: the view plugin exists only for the open source client. The warps are ordered by index; warps without a map are left out, and of warps with the same index only the first one is sent, because it's the one which a warp request uses. Names which don't fit into the 32 bytes of the field are shortened to whole characters instead of failing the message. The mocked game configuration of the tests gets an empty warp list, like its other collections.
Up to standards ✅🟢 Issues
|
| Metric | Results |
|---|---|
| Complexity | 25 |
| Duplication | -1 |
NEW Get contextual insights on your PRs based on Codacy's metrics, along with PR and Jira context, without leaving GitHub. Enable AI reviewer
TIP This summary will be updated as you push new changes.
pllanosclaria
marked this pull request as draft
November 13, 2026 01:00
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #1503
The open source client takes its warp list from its data files, which follow Webzen's Season 6, so it can't offer warps like Crywolf and Loren Market (see #1503, sven-n/MuMain#1057). With this change the server sends its warp list to the open source client when a character enters the game. Original clients don't get it.
Changes
WarpListExtended(C2 F5 09, server to client), in the XML with the generated code, docs and tests: a count, then per warp the index, map number, level requirement (as configured), costs and the name (32 bytes, UTF-8).IShowWarpListPlugIn, implemented only byShowWarpListExtendedPlugInwith[MinimumClient(106, 3, ClientLanguage.Invariant)], likeShowShopCurrenciesExtendedPlugIn. The name isWarpInfo.Namein the player's culture; a name which doesn't fit into the 32 bytes is shortened to whole characters instead of failing the message.ShowWarpListAfterEnterWorldPlugIn(IPlayerStateChangedPlugIn,CharacterSelection→EnteredWorld, so not on map changes): sends the warps ordered by index, without warps whose gate has no map, and of warps with the same index only the first one, because that's the oneWarpHandlerPlugInuses.PlayerTestHelper.CreateGameConfigurationsets up an empty warp list, like its other collections. Without it, the existing tests which enter the world with that mock failed on the new plugin.The client side is sven-n/MuMain#1110. It reads the message by hand, like the other F5 messages, so it doesn't need a new package version.
Testing
WarpListTests: the fields of the message (including the translated name), the shortened names, that only client 106.3 gets the view plugin, the selection and order of the warps, and that the list is sent after entering the game but not after a map change.dotnet build src/MUnique.OpenMU.sln, thendotnet test src/MUnique.OpenMU.sln --no-build: everything passed (MUnique.OpenMU.Tests 2893 passed, 2 skipped; Persistence.Initialization.Tests 851 passed, 12 skipped; the other projects passed without failures).warp, which takes the entry by name) and with/warp LorenMarketin the chat box;ShowWarpListExtendedPlugIndeactivated, the client falls back to its own list (no Crywolf), as with a server which doesn't know the message.Notes
C1-11-ObjectHit*_by-server.md,C1-48-ShowEffect_by-server.md); I left them out of this PR.