Packing slips

Packing slips are data entries which register metadata for various assets in The Sims Online. They are located in various files in the packingslips folder of the game.

Each of them is assumed to be used ingame except for outfits.xml, packingslips.dat, and packingslips.txt.

Accessory table
accessorytable.xml uses the AssetList element as follows:
 * key - The string identifier of this asset
 * assetID - A 64-bit big-endian integer in hexadecimal notation preceded by "0x" specifying the File ID followed by Type ID

Animation table
animtable.xml follows the AssetList format as described in Accessory table.

Catalog
catalog.xml uses the Catalog element as follows:
 * g - A 32-bit big-endian integer in hexadecimal notation preceded by "0x" specifying the File ID of this object
 * s - An integer specifying the catalog group for this object; according to tuning_hardcore.ini, valid identifiers are:
 * -1: Does not appear in catalog
 * 0: Build Mode - Doors
 * 1: Build Mode - Windows
 * 2: Build Mode - Stairs/elevators
 * 3: Build Mode - Plants
 * 4: Build Mode - Fireplaces
 * 5: Build Mode - Pool
 * 7: Build Mode - Walls/fences/columns
 * 12: Buy Mode - Seating
 * 13: Buy Mode - Surfaces
 * 14: Buy Mode - Appliances (which includes plumbing in The Sims Online)
 * 15: Buy Mode - Electronics
 * 16: Buy Mode - Skill/job objects
 * 17: Buy Mode - Decorative
 * 18: Buy Mode - Miscellaneous objects
 * 19: Buy Mode - Lighting
 * 20: Buy Mode - Pets
 * 21: Robot factory
 * 22: Restaurant
 * 23: Night club
 * 29: Special (objects with an icon that don't go in the catalog)
 * p - The price of the object as it appears in the catalog; if s is equal to -1, this value is ignored and should be set to 0
 * n - The string identifier of this object

Object table
objecttable.xml uses the ObjectInfoTable element as follows:
 * g - A 32-bit big-endian integer in hexadecimal notation preceded by "0x" specifying the File ID of this object
 * n - The string identifier of the group which this object belongs to
 * o - The string identifier of this object
 * m - Unknown at this time
 * f - Unknown at this time
 * i - Unknown at this time
 * l - A flag set to 0 or 1 specifying whether this object spans two floors (Note: There are elevators in TSO; these have l set to 1)

Outfits
outfits.xml uses the ReservedOutfits element as follows:
 * Censor - A 64-bit big-endian integer in hexadecimal notation preceded by "0x" specifying the File ID followed by Type ID of the default censor appearance
 * Default Body - A 64-bit big-endian integer in hexadecimal notation preceded by "0x" specifying the File ID followed by Type ID of the default body outfit
 * Default Head - A 64-bit big-endian integer in hexadecimal notation preceded by "0x" specifying the File ID followed by Type ID of the default head outfit

This file is not used ingame, as the text string "outfits" (case-insensitive, ASCII or Unicode) does not appear in the game exe or any of its dlls.

Packingslips.dat
packingslips.dat is a FARv3 archive which contains a binary packing slip for every file in the developers' debug client, as it probably was when the game was still in development. It contains entries for a "testserver" folder, "testclient", "userdata2", "master_client", "slave_client", "hitlabui", and so on. This file is not used ingame, as "packingslips.dat" and "packingslips.txt" don't show up in the game exe or any of its dlls.

Each entry follows this format, in big-endian byte order:
 * Major Version - A 2-byte unsigned integer specifying the major version of this binary packing slip; should be equal to 2
 * Minor Version - A 2-byte unsigned integer specifying the major version of this binary packing slip; should be equal to 0
 * File ID - A 4-byte unsigned integer specifying the File ID of this file
 * Type ID - A 4-byte unsigned integer specifying the Type ID of this file
 * Reserved - 8 bytes equal to 0
 * Asset Type - A 4-byte unsigned integer specifying the clsid of the class used to handle this asset format; there may be a name provided for this clsid in the Pre-Alpha constants table.
 * Unknown - 9 bytes equal to 00 00 00 00 03 00 00 00 00 (in hex)
 * String length - A single byte specifying the string length of the file's original location
 * MD5 checksum - 16 bytes representing the MD5 checksum of this file
 * String length - A single byte specifying the string length of the file's original location
 * String - A non-null-terminated string specifying the original location of this file, before being packed into an archive
 * Entry Type ID - Should be equal to 8 for Asset
 * Entry Body Type - A 4-byte unsigned integer specifying the type of data that follows; should be 0xA96F6D42 for cAssetKey
 * File ID - A 4-byte unsigned integer specifying the File ID of this file
 * Type ID - A 4-byte unsigned integer specifying the Type ID of this file

Packingslips.txt
This file is merely a log produced by the "Mr. Shipper - Asset Compiler/Inventory Agent V 3.06" utility used inhouse by EA to generate packingslips.dat.

Purchasable objects
purchasables.xml</tt> uses the PriceTable element as follows:

Textables
textables.xml</tt> follows the AssetList format as described in Accessory table.