package methods // // SyncTaskRoleTeam (64534724) — the server's handle on the character wheel / Z rotation list. // Signature (dump.cs:1732654): // void SyncTaskRoleTeam(uint[] roleTeam, uint[] enableRoleIds, uint tipRoleId, bool enableSwitch) // Why this exists: pressing Z sends nothing at all (measured — 0 packets across a whole session), // so the rotation list is client-side only. In lua the arrival path is // SpiritManager.lua:233 -> GameToClientImpl.lua:2311 and it fills gSpiritManager.taskRoleTeam // from enableRoleIds; the retail server never called it, which is why the client has always used // its own fallback (the FightSpiritConfig rows with CanJoin=true — exactly the 15 the player sees). // Payload notes: four bare arguments, so Inline is mandatory (no 0xFF/0x00 envelope). Both arrays // are plain uint lists and therefore use the default Int7 count like every other List<uint> // in these contracts (see Auto/Client4229938Contracts.Auto.cs InstalledApps). // ⚠️ Safety: this is a standalone notify, never part of the login payload. Sending nothing is the // default (see RosterSettings.SwitchableRoles) precisely so an encoding mistake here can brick // nothing until the config opts in — unlike adding a field to the login contract, which did take // the client down once. Do not move this into the login payload. //