Structures
Below are the structures of the appearance objects. It is useful to know if you want to use the appearance exports.
Appearance for exports
Below are the structures of the appearance objects. It is useful to know if you want to use the appearance exports.
TAppearance
type TAppearance = TClothes & TSkin & {
    tattoos?: TTattoo[]
 
    // These are only needed to open the Menu. In the future, this will be refactored to be its own type
    modelIndex?: number
    outfits?: Outfit[]
}TClothes
type TClothes = {
    headOverlay: THeadOverlay
    drawables: TDrawables
    props: TProps
}TSkin
type TSkin = {
    headBlend: THeadBlend
    headStructure: THeadStructure
    hairColor: THairColor
    model: number
}TTattoo
type TTattoo = {
    zoneIndex: number
    dlcIndex: number
    tattoo: TTattooEntry
    id: number
}Outfit
interface Outfit {
    id?: number | string,
    label: string,
    outfit: TOutfitData,
    jobname?: string,
    job?: { name: string, rank: number } | null
}TOutfitData
type TOutfitData  = {
    headOverlay: THeadOverlay
    drawables: TDrawables
    props: TProps;
    job?: { name: string, rank: number } | null;
}TProps
type TProps = {
    [key: string]: TValue
}TDrawables
type TDrawables = {
	[key: string]: TValue
}THeadStructure
type THeadStructure = {
	[key: string]: TValue
}THeadOverlay
interface HeadOverlayData {
    id: string;
    index: number;
    overlayValue?: number;
    colourinterface?: number;
    colourType?: number;
    firstColor?: number;
    secondColor?: number;
    overlayOpacity?: number;
    hairColor?: number
    hairHighlight?: number
    eyeColor?: number
};
 
type THeadOverlay = {
	[key: string]: HeadOverlayData
}THairColor
type THairColor = {
	highlight: number
	color: number
}THeadBlend
type THeadBlend  = {
	skinSecond: number
	skinThird: number
	shapeSecond: number
	shapeThird: number
	shapeFirst: number
	hasParent: boolean
	skinMix: number
	shapeMix: number
	thirdMix: number
	skinFirst: number
}TTattooEntry
type TTattooEntry = {
    label: string
    hash: number
    zone: number
    dlc?: string
}TValue
type TValue = {
	index: number
	value: number
	id?: string
    texture?: number
}