Releases: NosCoreIO/NosCore.Packets
Releases · NosCoreIO/NosCore.Packets
20.0.3
20.0.2
fix: AscrPacket leading-blank field (20.0.2) (#460) vanosilla UiPacketExtension emits `ascr <CurrentKill> ...` with a literal double space after the header. Adds a LeadingBlank field (non-nullable, defaults to empty string) at index 0 and shifts all other indices by +1. Same fix pattern as NsTeSTPacket (20.0.1) and SqstPacket. No in-tree consumer uses AscrPacket, so this ships as a patch. Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
20.0.1
fix: NsTeSTPacket.LeadingBlank defaults to empty string (20.0.1) (#459) The field models the literal double space vanosilla emits after the `NsTeST` header; without a non-null default the serializer emits "-" for an unset property, producing "NsTeST - 0 …" on the wire. Make the property non-nullable with an empty-string default so consumers don't have to remember to set it. Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
20.0.0
feat!: 20.0.0 - CMapPacket.IsEntering rename, add gmsg/gexp/rsfn/minf…
19.0.0
feat!: 19.0.0 - NsTeST leading-blank field, SuPacketHitMode sbyte + f…
18.0.0
feat!: 18.0.0 - fish catch-all, qstlist flat quest entry, NsTeST unkn…
17.6.0
fix: Game18NArguments deserialize, sayitemt redesign, pinit unknown, …
17.5.0
feat: add Qnamli2Packet and ServerPackets.Player.BpmPacket (17.5.0) (…
17.4.0
feat: add missing direction-pair packet classes (#452) Validator flagged headers as "Wrong tag" when they were captured in a direction the library only knew about from the opposite side. Add the missing counterparts so those captures deserialise correctly and give the server a schema to serialise through when it emits them. - ServerPackets.Families.GidxPacket + GidxFamilySubPacket — server emits `gidx 1 <visualId> <serverId>.<familyId> <familyName> <level> <icons>` (or `-1` family-id when the character has none). - ServerPackets.Npcs.NpcReqPacket — mirrors the client packet shape. - ServerPackets.Player.RsfiPacket — mirrors the client packet shape. - ClientPackets.UI.MallPacket — mirrors the server packet shape. - ClientPackets.Player.NpInfoPacket — mirrors the server packet shape. Deserializer dedup keeps "client wins" on duplicate headers, so runtime behaviour for single-deserializer consumers (NosCore's in-game packet handling) is unchanged. The validator uses two separate deserializers so now sees each side's schema in the right dict. Deferred to a follow-up: bpm/bpt server — complex list payloads that need per-field RE work rather than a safe mirror. Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
17.3.0
fix: TwkPacket setters, PetskiPacket schema, add QnamliPacket (#451) **TwkPacket** — ClientLanguageString / ServerLanguageString setters were throwing with "do not set this set the ClientLanguage instead", which means any deserialisation through these fields raised "Exception has been thrown by the target of an invocation." Replace with setters that parse the incoming string into the RegionType enum (case-insensitive), keeping the invariant the author cared about. **PetskiPacket** — class declared a single sbyte MateTransportId, but the wire carries `petski <mateTransportId> <skill1> <skill2>` (three fields, and the first is regularly > 127 e.g. 790). Widen to int and add FirstSkillVNum / SecondSkillVNum (short). Existing serializer test updated to reflect the real three-field trace. **QnamliPacket** — new class. `qnamli <questId> #<guri> <targetId> <v1> <v2> <v3>` was being flagged as Missing. Matches the observed wire. Regression tests: Petski serializer round-trip already covers the new shape; full suite 114/114 green. Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>