When a list of skin IDs doesn't yet exist for an item type, `GenerateSkins()` creates an empty list but doesn't add the first encountered skin ID to it. The result is one skin is missing from each item type.
Easiest fix is to change:
skins.Add(key, newList<ulong>());skins.Add(key, newList<ulong>(){skinId});