145 lines
7.2 KiB
Go

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"
}