package methods // // Weapon-skin surface (build 4229938), ported from the Lyco donor build on 2026-09-26. // Arg order from the donor's ClientToGameDelegate.lua serializer reading: // AskSetWeaponSkins(spiritIds, sceneItemIds, skinId) and // AskSyncWeaponSkinToSpirits(sourceSpiritId, targetSpiritIds); both return shapes are empty. // ⛑ These are C2S — the client is the writer, so the field order has to match its serializer. Both // handlers decode defensively; a wrong count encoding degrades to "skin not remembered" instead of // an exception on the only path whose job is to answer the INVOKE. // // // Push payload for SyncAddWeaponSkinList (64340654): the client reads a bare dict // (skinId -> acquireTime) via ReadDict7Bit, so the contract is a single Int7-counted dict. // With unlock-all seeding the whole catalog at login this stays unused, but it is the only channel // for granting a skin mid-session, so it is kept in shape. //