Skip to content

Releases: NosCoreIO/NosCore.Packets

20.0.3

24 Apr 15:37
b759975

Choose a tag to compare

fix: IsValid accepts empty strings for non-nullable string fields (20…

20.0.2

24 Apr 15:10
41cf996

Choose a tag to compare

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

24 Apr 15:03
375f70f

Choose a tag to compare

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

24 Apr 14:31
ac57e46

Choose a tag to compare

feat!: 20.0.0 - CMapPacket.IsEntering rename, add gmsg/gexp/rsfn/minf…

19.0.0

24 Apr 13:22
112f823

Choose a tag to compare

feat!: 19.0.0 - NsTeST leading-blank field, SuPacketHitMode sbyte + f…

18.0.0

24 Apr 12:40
040c73b

Choose a tag to compare

feat!: 18.0.0 - fish catch-all, qstlist flat quest entry, NsTeST unkn…

17.6.0

24 Apr 10:29
8e581d8

Choose a tag to compare

fix: Game18NArguments deserialize, sayitemt redesign, pinit unknown, …

17.5.0

24 Apr 09:49
3bdfcfb

Choose a tag to compare

feat: add Qnamli2Packet and ServerPackets.Player.BpmPacket (17.5.0) (…

17.4.0

24 Apr 09:07
ef78e9e

Choose a tag to compare

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

24 Apr 09:01
7de65f9

Choose a tag to compare

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>