package appearances // Hash search constants const ( // Maximum number of iterations to find an entry in hash table HashSearchMax = 20 ) // Client version constants for appearance compatibility const ( MinimumClientVersion = 0 DefaultClientVersion = 283 ) // Appearance type constants from the original EQ2EMu implementation // These correspond to different appearance features like hair, skin, clothing, etc. const ( AppearanceSOGAHairFaceHighlightColor = 0 // APPEARANCE_SOGA_HFHC AppearanceSOGAHairTypeHighlightColor = 1 // APPEARANCE_SOGA_HTHC AppearanceSOGAHairFaceColor = 2 // APPEARANCE_SOGA_HFC AppearanceSOGAHairTypeColor = 3 // APPEARANCE_SOGA_HTC AppearanceSOGAHairHighlight = 4 // APPEARANCE_SOGA_HH AppearanceSOGAHairColor1 = 5 // APPEARANCE_SOGA_HC1 AppearanceSOGAHairColor2 = 6 // APPEARANCE_SOGA_HC2 AppearanceSOGASkinColor = 7 // APPEARANCE_SOGA_SC AppearanceSOGAEyeColor = 8 // APPEARANCE_SOGA_EC AppearanceHairTypeHighlightColor = 9 // APPEARANCE_HTHC AppearanceHairFaceHighlightColor = 10 // APPEARANCE_HFHC AppearanceHairTypeColor = 11 // APPEARANCE_HTC AppearanceHairFaceColor = 12 // APPEARANCE_HFC AppearanceHairHighlight = 13 // APPEARANCE_HH AppearanceHairColor1 = 14 // APPEARANCE_HC1 AppearanceHairColor2 = 15 // APPEARANCE_HC2 AppearanceWingColor1 = 16 // APPEARANCE_WC1 AppearanceWingColor2 = 17 // APPEARANCE_WC2 AppearanceSkinColor = 18 // APPEARANCE_SC AppearanceEyeColor = 19 // APPEARANCE_EC AppearanceShirt = 20 // APPEARANCE_SHIRT AppearanceUnknownClothingColor = 21 // APPEARANCE_UCC AppearancePants = 22 // APPEARANCE_PANTS AppearanceUnknownLegColor = 23 // APPEARANCE_ULC AppearanceUnknown9 = 24 // APPEARANCE_U9 AppearanceBodySize = 25 // APPEARANCE_BODY_SIZE AppearanceSOGAWingColor1 = 26 // APPEARANCE_SOGA_WC1 AppearanceSOGAWingColor2 = 27 // APPEARANCE_SOGA_WC2 AppearanceSOGAShirt = 28 // APPEARANCE_SOGA_SHIRT AppearanceSOGAUnknownClothingColor = 29 // APPEARANCE_SOGA_UCC AppearanceSOGAPants = 30 // APPEARANCE_SOGA_PANTS AppearanceSOGAUnknownLegColor = 31 // APPEARANCE_SOGA_ULC AppearanceSOGAUnknown13 = 32 // APPEARANCE_SOGA_U13 AppearanceSOGAEyebrowType = 33 // APPEARANCE_SOGA_EBT AppearanceSOGACheekType = 34 // APPEARANCE_SOGA_CHEEKT AppearanceSOGANoseType = 35 // APPEARANCE_SOGA_NT AppearanceSOGAChinType = 36 // APPEARANCE_SOGA_CHINT AppearanceSOGALipType = 37 // APPEARANCE_SOGA_LT AppearanceSOGAEarType = 38 // APPEARANCE_SOGA_EART AppearanceSOGAEyeType = 39 // APPEARANCE_SOGA_EYET AppearanceEyebrowType = 40 // APPEARANCE_EBT AppearanceCheekType = 41 // APPEARANCE_CHEEKT AppearanceNoseType = 42 // APPEARANCE_NT AppearanceChinType = 43 // APPEARANCE_CHINT AppearanceEarType = 44 // APPEARANCE_EART AppearanceEyeType = 45 // APPEARANCE_EYET AppearanceLipType = 46 // APPEARANCE_LT AppearanceBodyAge = 47 // APPEARANCE_BODY_AGE AppearanceModelColor = 48 // APPEARANCE_MC AppearanceSOGAModelColor = 49 // APPEARANCE_SMC AppearanceSOGABodySize = 50 // APPEARANCE_SBS AppearanceSOGABodyAge = 51 // APPEARANCE_SBA ) // AppearanceTypeNames maps appearance type constants to human-readable names var AppearanceTypeNames = map[int8]string{ AppearanceSOGAHairFaceHighlightColor: "soga_hair_face_highlight_color", AppearanceSOGAHairTypeHighlightColor: "soga_hair_type_highlight_color", AppearanceSOGAHairFaceColor: "soga_hair_face_color", AppearanceSOGAHairTypeColor: "soga_hair_type_color", AppearanceSOGAHairHighlight: "soga_hair_highlight", AppearanceSOGAHairColor1: "soga_hair_color1", AppearanceSOGAHairColor2: "soga_hair_color2", AppearanceSOGASkinColor: "soga_skin_color", AppearanceSOGAEyeColor: "soga_eye_color", AppearanceHairTypeHighlightColor: "hair_type_highlight_color", AppearanceHairFaceHighlightColor: "hair_face_highlight_color", AppearanceHairTypeColor: "hair_type_color", AppearanceHairFaceColor: "hair_face_color", AppearanceHairHighlight: "hair_highlight", AppearanceHairColor1: "hair_color1", AppearanceHairColor2: "hair_color2", AppearanceWingColor1: "wing_color1", AppearanceWingColor2: "wing_color2", AppearanceSkinColor: "skin_color", AppearanceEyeColor: "eye_color", AppearanceShirt: "shirt_color", AppearanceUnknownClothingColor: "unknown_chest_color", AppearancePants: "pants_color", AppearanceUnknownLegColor: "unknown_leg_color", AppearanceUnknown9: "unknown9", AppearanceBodySize: "body_size", AppearanceSOGAWingColor1: "soga_wing_color1", AppearanceSOGAWingColor2: "soga_wing_color2", AppearanceSOGAShirt: "soga_shirt_color", AppearanceSOGAUnknownClothingColor: "soga_unknown_chest_color", AppearanceSOGAPants: "soga_pants_color", AppearanceSOGAUnknownLegColor: "soga_unknown_leg_color", AppearanceSOGAUnknown13: "soga_unknown13", AppearanceSOGAEyebrowType: "soga_eye_brow_type", AppearanceSOGACheekType: "soga_cheek_type", AppearanceSOGANoseType: "soga_nose_type", AppearanceSOGAChinType: "soga_chin_type", AppearanceSOGALipType: "soga_lip_type", AppearanceSOGAEarType: "soga_ear_type", AppearanceSOGAEyeType: "soga_eye_type", AppearanceEyebrowType: "eye_brow_type", AppearanceCheekType: "cheek_type", AppearanceNoseType: "nose_type", AppearanceChinType: "chin_type", AppearanceEarType: "ear_type", AppearanceEyeType: "eye_type", AppearanceLipType: "lip_type", AppearanceBodyAge: "body_age", AppearanceModelColor: "model_color", AppearanceSOGAModelColor: "soga_model_color", AppearanceSOGABodySize: "soga_body_size", AppearanceSOGABodyAge: "soga_body_age", } // GetAppearanceType returns the appearance type constant for a given type name func GetAppearanceType(typeName string) int8 { for typeConst, name := range AppearanceTypeNames { if name == typeName { return typeConst } } return -1 // Unknown type } // GetAppearanceTypeName returns the type name for a given appearance type constant func GetAppearanceTypeName(typeConst int8) string { if name, exists := AppearanceTypeNames[typeConst]; exists { return name } return "unknown" }