KarlitosVII / trilogy-save-editor

A save editor for Mass Effect Trilogy (and Legendary)
https://www.nexusmods.com/masseffectlegendaryedition/mods/20
Other
151 stars 20 forks source link

Feature Request: export headmorph in AMM-friendly XML formatting #60

Open ElysiumFic opened 1 year ago

ElysiumFic commented 1 year ago

I'm trying to add a bunch of my favorite headmorphs to the list of available presets in Appearance Mod Menu. I know you can add them to the character creator with just the face code, but adding them to AMM is a bit more complex.

I'd be more than happy to help implement this feature, I'm looking through the project now to see if I can monkey-see/monkey-do the export into this format. But I might have questions or need guidance.

Here is what the morph presets look like in AMM:

                <!-- Rihanna -->
                <Value type="3">(
                    comment="Rihanna",
                    Gender=Gender_Female,
                    ChoiceEntry=(srChoiceName=4216103),
                    number=19,
                    Delta=(
                        HeadMesh="None",
                        HairMesh="biog_hmf_hir_pro.Hair_Classy.HMF_HIR_Cls_MDL_CC",
                        RemoveCombatHairMeshOverride=true,
                        AccessoryMeshDeltas[0]=(Name="*",Remove=true),
                        MorphFeatureDeltas[0]=(Feature="*",Remove=true),
                        MorphFeatureDeltas[1]=(Feature="race_yngBlk",Offset="0"),
                        MorphFeatureDeltas[2]=(Feature="race_oldBlk",Offset="0"),
                        MorphFeatureDeltas[3]=(Feature="race_yngAsn",Offset="0"),
                        MorphFeatureDeltas[4]=(Feature="race_oldAsn",Offset="0"),
                        MorphFeatureDeltas[5]=(Feature="race_yngCauc",Offset="0"),
                        MorphFeatureDeltas[6]=(Feature="race_oldCauc",Offset="0"),
                        MorphFeatureDeltas[7]=(Feature="race_iconic",Offset="0"),
                        MorphFeatureDeltas[8]=(Feature="race_Ashley",Offset="0.7"),
                        MorphFeatureDeltas[9]=(Feature="race_liara",Offset="0"),
                        MorphFeatureDeltas[10]=(Feature="neck_wide",Offset="0.2"),
                        MorphFeatureDeltas[11]=(Feature="neck_Thin",Offset="0"),
                        MorphFeatureDeltas[12]=(Feature="shape_chubby",Offset="0"),
                        MorphFeatureDeltas[13]=(Feature="shape_skinny",Offset="0.17999999"),
                        MorphFeatureDeltas[14]=(Feature="cheek_BonesOut",Offset="0.4800001"),
                        MorphFeatureDeltas[15]=(Feature="cheek_BonesIn",Offset="0"),
                        MorphFeatureDeltas[16]=(Feature="cheek_DepthFront",Offset="0.16000004"),
                        MorphFeatureDeltas[17]=(Feature="cheek_DepthBack",Offset="0"),
                        MorphFeatureDeltas[18]=(Feature="cheek_Gaunt",Offset="0.02666667"),
                        MorphFeatureDeltas[19]=(Feature="ears_large",Offset="0"),
                        MorphFeatureDeltas[20]=(Feature="ears_small",Offset="0.16"),
                        MorphFeatureDeltas[21]=(Feature="ears_In",Offset="0.32000002"),
                        MorphFeatureDeltas[22]=(Feature="ears_Out",Offset="0"),
                        MorphFeatureDeltas[23]=(Feature="eyeShape_droop",Offset="0.7"),
                        MorphFeatureDeltas[24]=(Feature="eyeShape_sleepy",Offset="0"),
                        MorphFeatureDeltas[25]=(Feature="eyeShape_SlantUp",Offset="0"),
                        MorphFeatureDeltas[26]=(Feature="eyeShape_highInside",Offset="0"),
                        MorphFeatureDeltas[27]=(Feature="eyeShape_flatTop",Offset="0"),
                        MorphFeatureDeltas[28]=(Feature="eyes_SlantDown",Offset="0"),
                        MorphFeatureDeltas[29]=(Feature="eyeShape_liara",Offset="0"),
                        MorphFeatureDeltas[30]=(Feature="eyeShape_Ashley",Offset="0"),
                        MorphFeatureDeltas[31]=(Feature="eyeShape_yngAsn",Offset="0"),
                        MorphFeatureDeltas[32]=(Feature="eyes_PosUp",Offset="0"),
                        MorphFeatureDeltas[33]=(Feature="eyes_PosDown",Offset="0.09333333"),
                        MorphFeatureDeltas[34]=(Feature="eyes_Wide",Offset="0.05333338"),
                        MorphFeatureDeltas[35]=(Feature="eyes_narrow",Offset="0"),
                        MorphFeatureDeltas[36]=(Feature="eyes_Forward",Offset="0"),
                        MorphFeatureDeltas[37]=(Feature="eyes_Back",Offset="0"),
                        MorphFeatureDeltas[38]=(Feature="eyes_browForward",Offset="0.33000004"),
                        MorphFeatureDeltas[39]=(Feature="eyes_browBack",Offset="0"),
                        MorphFeatureDeltas[40]=(Feature="eyes_browUp",Offset="0"),
                        MorphFeatureDeltas[41]=(Feature="eyes_browDown",Offset="0.3333333"),
                        MorphFeatureDeltas[42]=(Feature="jaw_chinUp",Offset="0.08000002"),
                        MorphFeatureDeltas[43]=(Feature="jaw_chinDown",Offset="0"),
                        MorphFeatureDeltas[44]=(Feature="jaw_chinOut",Offset="0"),
                        MorphFeatureDeltas[45]=(Feature="jaw_chinIn",Offset="0026666641"),
                        MorphFeatureDeltas[46]=(Feature="jaw_chinThin",Offset="0"),
                        MorphFeatureDeltas[47]=(Feature="jaw_chinWide",Offset="0.24"),
                        MorphFeatureDeltas[48]=(Feature="jaw_wide",Offset="0"),
                        MorphFeatureDeltas[49]=(Feature="jaw_narrow",Offset="0.19999993"),
                        MorphFeatureDeltas[50]=(Feature="mouthShape_iconic",Offset="0"),
                        MorphFeatureDeltas[51]=(Feature="mouthShape_ashley",Offset="0"),
                        MorphFeatureDeltas[52]=(Feature="mouthShape_liara",Offset="0"),
                        MorphFeatureDeltas[53]=(Feature="mouthShape_oldAsn",Offset="0"),
                        MorphFeatureDeltas[54]=(Feature="mouthShape_oldBlk",Offset="0"),
                        MorphFeatureDeltas[55]=(Feature="mouthShape_yngBlk",Offset="0"),
                        MorphFeatureDeltas[56]=(Feature="mouthShape_yngCauc",Offset="0"),
                        MorphFeatureDeltas[57]=(Feature="mouthShape_yngAsn",Offset="1"),
                        MorphFeatureDeltas[58]=(Feature="mouth_Forward",Offset="0.32000008"),
                        MorphFeatureDeltas[59]=(Feature="mouth_Back",Offset="0"),
                        MorphFeatureDeltas[60]=(Feature="mouth_Wide",Offset="0"),
                        MorphFeatureDeltas[61]=(Feature="mouth_Narrow",Offset="0.2"),
                        MorphFeatureDeltas[62]=(Feature="mouth_lipsFat",Offset="0.60000014"),
                        MorphFeatureDeltas[63]=(Feature="mouth_lipsThin",Offset="0"),
                        MorphFeatureDeltas[64]=(Feature="mouth_Up",Offset="0"),
                        MorphFeatureDeltas[65]=(Feature="mouth_Down",Offset="0.22"),
                        MorphFeatureDeltas[66]=(Feature="nose_BridgeOut",Offset="0"),
                        MorphFeatureDeltas[67]=(Feature="nose_BridgeIn",Offset="0"),
                        MorphFeatureDeltas[68]=(Feature="nose_BridgeThin",Offset="0"),
                        MorphFeatureDeltas[69]=(Feature="nose_BridgeWide",Offset="0.8"),
                        MorphFeatureDeltas[70]=(Feature="nose_nostrilsnarrow",Offset="0"),
                        MorphFeatureDeltas[71]=(Feature="nose_nostrilsWide",Offset="0.6"),
                        MorphFeatureDeltas[72]=(Feature="nose_tipNarrow",Offset="0"),
                        MorphFeatureDeltas[73]=(Feature="nose_tipWide",Offset="0.55"),
                        MorphFeatureDeltas[74]=(Feature="nose_TipDown",Offset="0.2"),
                        MorphFeatureDeltas[75]=(Feature="nose_TipUp",Offset="0"),
                        MorphFeatureDeltas[76]=(Feature="nose_topOut",Offset="0"),
                        MorphFeatureDeltas[77]=(Feature="nose_topIn",Offset="0"),
                        MorphFeatureDeltas[78]=(Feature="nose_Up",Offset="0.08000002"),
                        MorphFeatureDeltas[79]=(Feature="nose_Down",Offset="0"),
                        MorphFeatureDeltas[80]=(Feature="nose_BottomOut",Offset="0.13000003"),
                        MorphFeatureDeltas[81]=(Feature="nose_BottomIn",Offset="0"),
                        ScalarParameterDeltas[0]=(Name="*",Remove=true),
                        ScalarParameterDeltas[1]=(Name="HED_Scalp_Mask_Scalar",Value="1"),
                        ScalarParameterDeltas[2]=(Name="HED_Blush_Scalar",Value="0.28"),
                        ScalarParameterDeltas[3]=(Name="HED_Addn_Spec_Lips_Scalar",Value="0.3"),
                        ScalarParameterDeltas[4]=(Name="HED_Addn_SPwr_Lips_Scalar",Value="7"),
                        ScalarParameterDeltas[5]=(Name="HED_Norm_Blend",Value="0"),
                        ScalarParameterDeltas[6]=(Name="HAIR_Shine_Desaturate_Scalar",Value="0"),
                        ScalarParameterDeltas[7]=(Name="HED_Scalp_PhongSpec_Scalar",Value="3"),
                        ScalarParameterDeltas[8]=(Name="Highlight1SpecExp_Scalar",Value="50"),
                        ScalarParameterDeltas[9]=(Name="Highlight2SpecExp_Scalar",Value="250"),
                        ScalarParameterDeltas[10]=(Name="Hair_Spec_Aniso_Exp_Scalar",Value="3.5"),
                        ScalarParameterDeltas[11]=(Name="HAIR_Spec_Contribution_Scalar",Value="1.25"),
                        ScalarParameterDeltas[12]=(Name="HED_Addn_Colour_02_Scalar",Value="1"),
                        ScalarParameterDeltas[13]=(Name="HED_Addn_Blowout_Scalar",Value="1.5"),
                        ScalarParameterDeltas[14]=(Name="HED_Scar_Scalar",Value="0"),
                        ScalarParameterDeltas[15]=(Name="HED_Addn_Blend_Scalar",Value="1"),
                        ScalarParameterDeltas[16]=(Name="HED_Mask_Scalar",Value="0"),
                        ScalarParameterDeltas[17]=(Name="HED_Lips_Tint_Scalar",Value="1"),
                        ScalarParameterDeltas[18]=(Name="HED_EyeShadow_Tint_Scalar",Value="1"),
                        ScalarParameterDeltas[19]=(Name="HED_Brow_Tint_Scalar",Value="1.1"),
                        ScalarParameterDeltas[20]=(Name="HED_SPwr_Scalar",Value="5.354"),
                        ScalarParameterDeltas[21]=(Name="HED_Frek_RedChannel_Scalar",Value="0"),
                        ScalarParameterDeltas[22]=(Name="HED_Frek_GreenChannel_Scalar",Value="0.23099999"),
                        ScalarParameterDeltas[23]=(Name="HAIR_SPwr_Scalar",Value="1.5"),
                        ScalarParameterDeltas[24]=(Name="HED_Spec_NoBrow",Value="1"),
                        ScalarParameterDeltas[25]=(Name="HED_Custom_Scar_Scalar",Value="1"),
                        ScalarParameterDeltas[26]=(Name="HED_Scar_Diffuse_Scalar",Value="0"),
                        ScalarParameterDeltas[27]=(Name="HED_Addn_Colour_Blend_Scalar",Value="0"),
                        ScalarParameterDeltas[28]=(Name="HED_Addn_Multiply_Scalar",Value="0"),
                        ScalarParameterDeltas[29]=(Name="HED_Addn_Add_Scalar",Value="0"),
                        ScalarParameterDeltas[30]=(Name="Hightlight1Intensity",Value="2"),
                        ScalarParameterDeltas[31]=(Name="Hightlight2Intensity",Value="2"),
                        ScalarParameterDeltas[32]=(Name="HED_Scalp_Buzzcut_Alpha_Scalar",Value="0"),
                        ScalarParameterDeltas[33]=(Name="HED_Scalp_Mask_OverlayKill_Scalar",Value="0"),
                        ScalarParameterDeltas[34]=(Name="HAIR_Mask_Alpha_Scalar",Value="0"),
                        VectorParameterDeltas[0]=(Name="*",Remove=true),
                        VectorParameterDeltas[1]=(Name="HED_Blush_Vector",Value=(R="0.38891026",G="0.06772459",B="0.020951131",A="1")),
                        VectorParameterDeltas[2]=(Name="SkinTone",Value=(R="0.37361503",G="0.13902245",B="0.06381487",A="1")),
                        VectorParameterDeltas[3]=(Name="EYE_White_Colour_Vector",Value=(R="0.6253447",G="0.52344316",B="0.42050794",A="1")),
                        VectorParameterDeltas[4]=(Name="HED_Spec_Add_Vector",Value=(R="0.3586539",G="0.3636039",B="0.34886482",A="1")),
                        VectorParameterDeltas[5]=(Name="HED_Scar_Colour_Vector",Value=(R="0.8045591",G="0.7082978",B="0.6523701",A="1")),
                        VectorParameterDeltas[6]=(Name="EYE_Iris_Colour_Vector",Value=(R="0.51139784",G="0.13609855",B="0.052841626",A="1")),
                        VectorParameterDeltas[7]=(Name="HED_Hair_Colour_Vector",Value=(R="0.4259053",G="0.03561437",B="0.44787085",A="1")),
                        VectorParameterDeltas[8]=(Name="HED_Addn_Colour_Vector",Value=(R="0.025371278",G="0.0033027031",B="0.026548684",A="1")),
                        VectorParameterDeltas[9]=(Name="blonde",Value=(R="0.025371278",G="0.0033027031",B="0.026548684",A="1")),
                        VectorParameterDeltas[10]=(Name="HED_Mask_Vector",Value=(R="0",G="0",B="0",A="1")),
                        VectorParameterDeltas[11]=(Name="HED_Lips_Tint_Vector",Value=(R="0",G="0",B="0",A="1")),
                        VectorParameterDeltas[12]=(Name="HED_EyeShadow_Tint_Vector",Value=(R="0.019917838",G="0.004559755",B="0.011126082",A="1")),
                        VectorParameterDeltas[13]=(Name="HED_Brow_Tint_Vector",Value=(R="0.009021492",G="0.0077510276",B="0.009021492",A="1")),
                        VectorParameterDeltas[14]=(Name="HED_Frek_RedChannel_Vector",Value=(R="0",G="0",B="0",A="1")),
                        VectorParameterDeltas[15]=(Name="HED_Frek_GreenChannel_Vector",Value=(R="0.000056921766",G="0.000005077052",B="0.000005077052",A="1")),
                        VectorParameterDeltas[16]=(Name="HED_Aniso_Colour01_Vector",Value=(R="0.7154654",G="0.45345646",B="0.3992933",A="1")),
                        VectorParameterDeltas[17]=(Name="HED_Aniso_Colour02_Vector",Value=(R="0.66611695",G="0.37361503",B="0.31576276",A="1")),
                        VectorParameterDeltas[18]=(Name="HED_Teeth_Vector",Value=(R="0.82772577",G="0.3537409",B="0.22713652",A="1")),
                        VectorParameterDeltas[19]=(Name="HED_Scar_Vector",Value=(R="0",G="0",B="0",A="1")),
                        VectorParameterDeltas[20]=(Name="Highlight1Color",Value=(R="0.95736957",G="0",B="0",A="1")),
                        VectorParameterDeltas[21]=(Name="Highlight2Color",Value=(R="0.95736957",G="0",B="0",A="1")),
                        TextureParameterDeltas[0]=(Name="*",Remove=true),
                        TextureParameterDeltas[1]=(Name="HED_Scalp_Diff",Texture="biog_hmf_hir_pro.Hair_Pulled02.HMF_HIR_SCP_Pll02_Diff"),
                        TextureParameterDeltas[2]=(Name="HED_Scalp_Norm",Texture="biog_hmf_hir_pro.Hair_Pulled02.HMF_HIR_SCP_Pll02_Norm"),
                        TextureParameterDeltas[3]=(Name="HAIR_Diff",Texture="biog_hmf_hir_pro.Global.HAIR_Long_Diff"),
                        TextureParameterDeltas[4]=(Name="HED_Diff",Texture="BIOG_HMF_HED_PROMorph_R.Diffuse.HMF_HED_PROBase_Face_Diff"),
                        TextureParameterDeltas[5]=(Name="HED_Addn",Texture="BIOG_HMF_HED_PROMorph_R.Brow.HMF_HED_PRO_Add4"),
                        TextureParameterDeltas[6]=(Name="HED_Mask",Texture="BIOG_HMM_HED_PROMorph.Masks.HED_PRO_Mask3"),
                        TextureParameterDeltas[7]=(Name="HED_Lash_Diff",Texture="BIOG_HMF_HED_PROMorph_R.Custom.HMF_HED_PROLash_Opac_M02"),
                        TextureParameterDeltas[8]=(Name="HED_Frek",Texture="BIOG_HMM_HED_PROMorph.Freckles.HMM_HED_PROBase_Face_Frk3"),
                        TextureParameterDeltas[9]=(Name="HED_Norm",Texture="BIOG_HMF_HED_PROMorph_R.Normal.HMF_HED_PROBase_Face_Norm"),
                        TextureParameterDeltas[10]=(Name="HED_Norm_02",Texture="BIOG_HMF_HED_PROMorph_R.Normal.HMF_HED_PROOld1_Face_Norm"),
                        TextureParameterDeltas[11]=(Name="HED_Makeup_Mask",Texture="BIOG_HMF_HED_PROMorph_R.Masks.HMF_HED_PROCustom_MKup_01"),
                        TextureParameterDeltas[12]=(Name="HED_Scalp_Spec",Texture="biog_hmf_hir_pro.Hair_Pulled02.HMF_HIR_SCP_Pll02_Mask"),
                        TextureParameterDeltas[13]=(Name="HED_Tang",Texture="biog_hmf_hir_pro.Hair_Pulled02.HMF_HIR_SCP_Pll02_Tang"),
                        TextureParameterDeltas[14]=(Name="HAIR_Norm",Texture="None"),
                        TextureParameterDeltas[15]=(Name="HAIR_Mask",Texture="biog_hmf_hir_pro.Global.HAIR_Long_Diff"),
                        TextureParameterDeltas[16]=(Name="HAIR_Tang",Texture="None"),
                        TextureParameterDeltas[17]=(Name="HED_Scalp_SpecShift",Texture="None"),
                        TextureParameterDeltas[18]=(Name="HED_Scalp_SpecShift2",Texture="None"),
                        TextureParameterDeltas[19]=(Name="HAIR_SpecShift",Texture="None"),
                        TextureParameterDeltas[20]=(Name="HAIR_SpecShift2",Texture="None"),
                        TextureParameterDeltas[21]=(Name="HED_Brow",Texture="BIOG_HMF_HED_PROMorph_R.Brow.HMF_HED_PROCustom_ArchedHighBrow"),
                    ))
                </Value>