DB/ChrCustomization

From wowdev
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

≥ Legion (7.3.5.25600)

struct ChrCustomizationRec {
  uint32_t m_ID;
  stringref m_name;
  uint32_t m_sex;                 // 0x1 female, 0x3 both
  uint32_t m_baseSection;
  uint32_t m_uiCustomizationType;
  uint32_t m_flags;               // only some tattoos have 0x1...
  int32_t m_componentSection[3];  // m_componentSection[0] is textureRegion for tattoos, rest are -1...
  uint32_t m_raceID;              // 0 for all races
};
enum UiCustomizationType
{
    Skin = 0,
    Face = 1,
    Hair = 2, // Hair Style, Horn Style
    HairColor = 3, // Hair Color, Horn Color
    FacialHair = 4, // Facial Hair, Piercings, Markings, Features, Hair, Earrings, Tusks, Ears, Horn Style, Accessories
    CustomOptionTattoo = 5, // Tattoo Style
    CustomOptionHorn = 6, // Horn Style, Tusks
    CustomOptionFacewear = 7, // Blindfolds, Rune, Earrings, Posture
    CustomOptionTattooColor = 8 // Tattoo Color
}

C# parsing example

(by TOM_RUS)

public static void DumpCustomizations()
{
    foreach (var raceRec in ClientDB.ChrRaces.Records)
    {
        for (int gender = 0; gender < 2; gender++)
        {
            Console.WriteLine("Customizations for {0} {1}:", (Races)raceRec.Id, (Gender)gender);

            foreach (var cust in ClientDB.ChrCustomization.Records)
            {
                if ((cust.m_raceID == 0 || cust.m_raceID == raceRec.Id) && (cust.m_sexID == 3 || cust.m_sexID == gender))
                {
                    Console.WriteLine("{0}: field08 {1}, field0C {2}, field10 {3}, field14 [{4}, {5}, {6}]", cust.m_name, cust.field08, cust.field0C, cust.field10,  cust.field14[0], cust.field14[1], cust.field14[2]);
                }
            }

            Console.WriteLine();
        }
    }
}