17 lines
1.1 KiB
Go
17 lines
1.1 KiB
Go
package methods
|
|
|
|
//
|
|
// SyncSpiritJobInfo (64913222) — the runtime urban-job record for one controllable character.
|
|
// Signature: void SyncSpiritJobInfo(uint spiritId, Dictionary<uint, SpiritJob> spiritJobs, uint currentJob)
|
|
// Why a runtime push and not part of the login payload: a non-empty
|
|
// SpiritJobInfo.AvailableJobs dictionary inside the big PlayerInfo packet desynchronizes
|
|
// the 4229938 Lua reader and blocks scene entry. The login payload therefore carries
|
|
// CurrentJob only; this packet is the only place allowed to populate the job dictionary.
|
|
// CurrentJob = 0 is NOT a valid UrbanJobConfig id — it makes the client's SpiritJobManager
|
|
// dereference a missing config once a job record arrives. Use 100 (Jobless).
|
|
// Wire (7k-verified 2026-09-20): the lua reader consumes the three parameters bare — no
|
|
// top-level marker — hence Inline=true; Auto.SpiritJobTalentInfo carries TypeMark=1 so the
|
|
// TalentInfo dispatch tag reads "base type" (0x00 means null and would swallow the rest of the
|
|
// record — that misalignment is what crashed the client's CheckActivateJob in the codec era).
|
|
//
|