How to install CC without breaking your family

This tutorial explains: 1) how DA2 determines what headmorphs are assigned to your family after character creation 2) how you can tweak this system to integrate modded skin tints and presets into the character creator without bizarre results and 3) how to edit an existing save game to fix inappropriately-assigned headmorphs.

A shoutout must be given to Natural Skin for being a generally excellent mod for extra (especially darker) skin tints, as well as the only mod I know of that actually adds additional family headmorph presets rather than just giving up and replacing them wholesale. Examining that mod pointed me in the right direction to locate some files and enabled the writing of parts of this tutorial. I highly recommend downloading and endorsing it.

While you can edit GDA files with the DAO Toolset or pyGFF, if you have either installed, I highly recommend downloading GDApp for all your GDA-editing needs.

If you’ve installed any mods affecting the character creator you’re likely already familiar with the chargenmorphcfg.xml file that determines specific things, such as hair and tints, that will show up in the CC, even if this familiarity only extends as far as “you need to use CharGenMorph Compiler to make CC mods compatible with each other.”

You can compile mods into chargenmorphcfg.xml manually or automate it through CharGenMorph Compiler, whichever you prefer. The only two sections that affect what headmorphs are assigned to Hawke’s family are <heads> and <skin_colors> so those are the only sections that may have to be altered manually. The two GDA files that are used in this process, family_rules_headfeatures.gda and family_rules_headskintone.gda, can be extracted via pyGFF from Dragon Age 2\packages\core\data\2da.rim (note, this is the folder where you installed your game, not in your documents folder). Or just grab them here (you’re welcome):

family_rules.zip (201 downloads)

The xml file can be opened in any text editor, such as Notepad or Notepad++. Starting first with <heads>, the settings in the vanilla file look like this:

<heads>
   <human_male>
     <resource name="hm_iconicmale_nomark.mop" />
     <resource name="hm_iconicmale.mop" />
     <resource name="HM_CGN_001.mop" />
     <resource name="HM_CGN_002.mop" />
     <resource name="HM_CGN_003.mop" />
     <resource name="HM_CGN_004.mop" />
     <resource name="HM_CGN_005.mop" />
     <resource name="HM_CGN_006.mop" />
     <resource name="HM_CGN_007.mop" />
     <resource name="HM_CGN_008.mop" />
     <resource name="HM_CGN_009.mop" />
   </human_male>
   <human_female>
     <resource name="hf_iconicfemale_normark.mop" />
     <resource name="hf_iconicfemale.mop" />
     <resource name="HF_CGN_001.mop" />
     <resource name="HF_CGN_002.mop" />
     <resource name="HF_CGN_003.mop" />
     <resource name="HF_CGN_004.mop" />
     <resource name="HF_CGN_005.mop" />
     <resource name="HF_CGN_006.mop" />
     <resource name="HF_CGN_007.mop" />
     <resource name="HF_CGN_008.mop" />
     <resource name="HF_CGN_009.mop" />
   </human_female>
 </heads>

A very simple edit to make is to duplicate the entries for the iconic head so it can be altered with the sliders, which are normally greyed out. I’ve also added the entries from LOTC’s DA2 NPC Presets by copying them from the included chargenmorphcfg.xml, but since I’m only using them for nefarious modding purposes and don’t intend to use them on a playthrough I’ve just added them to the end of the list where they won’t interfere with anything so I can ignore them. I am going to move the Bethany preset up next to the iconic Marian morph, though, so when I start my champion Bethany playthrough later I’ll know the game will spit out iconic Carver to go along with her. I have to also move the Carver preset up next to Garrett at the same time to keep the presets correctly aligned across both genders. My edited file now looks like this:

  <heads>
    <human_male>
<!-- Family Preset Head Features 1 -->
      <resource name="hm_iconicmale_nomark.mop" />
      <resource name="hm_iconicmale.mop" />
      <resource name="hm_iconicmale_nomark.mop" />
      <resource name="hm_iconicmale.mop" />  
      <resource name="face\hm_cgn_carver.mop" />
      <resource name="HM_CGN_001.mop" />
      <resource name="HM_CGN_002.mop" />
      <resource name="HM_CGN_003.mop" />
<!-- Family Preset Head Features 2 -->
      <resource name="HM_CGN_004.mop" />
      <resource name="HM_CGN_005.mop" />
      <resource name="HM_CGN_006.mop" />
<!-- Family Preset Head Features 3 -->
      <resource name="HM_CGN_007.mop" />
      <resource name="HM_CGN_008.mop" />
      <resource name="HM_CGN_009.mop" />
<!-- LOTC's NPC Presets -->
      <resource name="face\hm_cgn_anders.mop" />
      <resource name="face\hm_cgn_cullen.mop" />
      <resource name="face\hm_cgn_alistair.mop" />
      <resource name="face\hm_cgn_sebastian.mop" />
      <resource name="face\hm_cgn_nate.mop" />
      <resource name="face\hm_cgn_teagan.mop" />
    </human_male>
    <human_female>
<!-- Family Preset Head Features 1 -->
      <resource name="hf_iconicfemale_normark.mop" />
      <resource name="hf_iconicfemale.mop" />
      <resource name="hf_iconicfemale_normark.mop" /> 
      <resource name="hf_iconicfemale.mop" />
      <resource name="face\hf_cgn_beth.mop" />
      <resource name="HF_CGN_001.mop" />
      <resource name="HF_CGN_002.mop" />
      <resource name="HF_CGN_003.mop" />
<!-- Family Preset Head Features 2 -->
      <resource name="HF_CGN_004.mop" />
      <resource name="HF_CGN_005.mop" />
      <resource name="HF_CGN_006.mop" />
<!-- Family Preset Head Features 3 -->
      <resource name="HF_CGN_007.mop" />
      <resource name="HF_CGN_008.mop" />
      <resource name="HF_CGN_009.mop" />
<!-- LOTC's NPC Presets -->
      <resource name="face\hf_cgn_leli.mop" />
      <resource name="face\hf_cgn_morr.mop" />
      <resource name="face\hf_cgn_cassandra.mop" />
      <resource name="face\hf_cgn_isab.mop" />
      <resource name="face\hf_cgn_aveline.mop" />
    </human_female>
  </heads>

You can see I’ve added <!– comments –> to help keep track of which presets should go where after the changes I’m making. Now to open family_rules_headfeatures.gda in GDApp. It looks like this:

What this does is tell the game what number should be used to find the correct headmorph for your family members (the “1” in h1s3 for example), based on what slider position was selected in the CC. The game is set up to assign a new family headmorph setting per three heads, but since the iconic head is included in the first family preset and repeated twice (once with mark and once without), h1 is actually assigned to the first five slider positions, then the next two are assigned three each. It’s zero-indexed, so the first five slider settings are 0-4 – not 1-5 – and so on.

Since three additional entries have been added at the start of the list and should use the h1 headmorphs, I’m going to increment the numbers in the file by three so they align with the correct slider settings again. Then File > Save As (ctrl + S doesn’t work in GDApp so don’t be a goober like I am and forget this constantly) and save the file in packages\core\override.

The obnoxiously noticeable part that really gets to people is, I’m sure, the skintone settings. The vanilla xml contains these settings, with comments added by myself to show the breakpoints between head settings:

  <skin_colors>
<!– Family Preset Head Skintone 1 –>
      <resource name="t1_skn_h01"/>
      <resource name="t1_skn_h02"/>
      <resource name="t1_skn_h03"/>
      <resource name="t1_skn_h04"/>
      <resource name="t1_skn_h05"/>
< !– Family Preset Head Skintone 2 –>
      <resource name="t1_skn_h06"/>
      <resource name="t1_skn_h07"/>
      <resource name="t1_skn_h08"/>
      <resource name="t1_skn_h09"/>
< !– Family Preset Head Skintone 3 –>
      <resource name="t1_skn_h10"/>
      <resource name="t1_skn_h11"/>
      <resource name="t1_skn_h12"/>
  </skin_colors>

Conversely, the breakpoints included with Natural Skin occur here (comments added once again by moi):

  <skin_colors>
<!-- Family Preset Head Skintone 1 -->
      <resource name="t1_skn_h01"/>
      <resource name="t1_skn_h02"/>
      <resource name="t1_skn_h03"/>
      <resource name="t1_skn_h04"/>
        <resource name="vq_skn_c05"/>
<!-- Family Preset Head Skintone 2 -->
        <resource name="vq_skn_a01"/>
      <resource name="t1_skn_h05"/>
      <resource name="t1_skn_h06"/>
        <resource name="vq_skn_a04"/>
      <resource name="t1_skn_h07"/>
        <resource name="vq_skn_a06"/>
<!-- Family Preset Head Skintone 3 -->
      <resource name="t1_skn_h08"/>
        <resource name="vq_skn_m02"/>
        <resource name="vq_skn_m03"/>
      <resource name="t1_skn_h09"/>
        <resource name="vq_skn_m05"/>
        <resource name="vq_skn_m06"/>
      <resource name="t1_skn_h10"/>
<!-- Family Preset Head Skintone 4 -->
      <resource name="t1_skn_h11"/>
      <resource name="t1_skn_h12"/>
        <resource name="vq_skn_b01"/>
        <resource name="vq_skn_b02"/>
        <resource name="vq_skn_b03"/>
        <resource name="vq_skn_b04"/>
        <resource name="vq_skn_b05"/>
  </skin_colors>

For simplicity, I only use Natural Skin for my Hawkes, not any of the other skin tint mods available, so I don’t have another personal example to show here. There are a couple of ways to go about integrating other mods skin tint mods (such as Strong Skin Colours by dalishious​) into your chargenmorphcfg.xml. You can flip through the other modded skin tints – counting the slider positions to compare against the file names in the xml – and decide which ones you want to go with which family skintone preset and manually position them accordingly. Or if that’s too much effort you can just use either the vanilla or Natural Skin settings, make sure all additional skin tints are at the end of the list where they won’t interfere, and just choose the closest tint from the sorted section of the list in the CC and then change it later in Black Emporium if you desire.

However you decide to go about it, family_rules_headskintone.gda is edited exactly the same way as family_rules_headfeatures.gda. Here’s how it looks with vanilla settings and with Natural Skin settings:

Modding Hawke’s family is not a quick or simple task by any means. Adding another skintone setting to the game means that Natural Skin had to provide 21 additional headmorphs (3 for Gamlen; 6 each for Carver, Bethany, and Leandra). But hopefully understanding how the game chooses your family will enable you to make more informed decisions about how to customize your Hawke and their family to your liking.

“But sapphim​,” you say, “I already started the game and my Hawke looks adopted and that’s not really what I was going for. I don’t want to restart the game, can you help?”

Never fear, that’s what save game editing is for. See, since the game swaps out the head morphs for Bethany, Carver, and Leandra for altered versions at specific points, it has to have some way to keep track of what head morphs it’s currently using.

Using pyGFF, open the .das save game you want to edit. Expand SAVEGAME_CAMPAIGN, then SCRIPTVARTABLE, and then scroll down until you locate 10600 and 10601 (these correspond to lines in var_module.gda btw). 10600 is headfeatures and 10601 is headskintone, so Tabitha here has h2s3:

To change these values, highlight SCRIPTVARTABLE_VALUE, change the number in the edit box, and then hit the Save button underneath.

That will take care of Leandra and Gamlen but your siblings’ head morphs are also stored elsewhere in the save game. This time expand SAVEGAME_PARTYLIST and then SAVEGAME_PARTYPOOLMEMBERS and locate your sibling. Their head morph name is stored under SAVEGAME_APPEARANCE.

Highlight SAVEGAME_APPEARANCE_MORPH_NAME, change it in the edit field, and hit the Save button. Then go to File > Save As to save your save game (make a backup first maybe!). The next time you start the game you’ll have a ~~shiny new family~~