hey remember that time I made a mod that can will and does permanently delete your followers from the party pool if uninstalled improperly? because I don't! I keep forgetting that's why I shelved the mod and then I start wondering to myself "hey I permanently shelved that mod, right? why did I do that? I'm smart and talented and handsome, I can totally–" and then it hits me like a comically placed rake to the face
So before I can explain the DA2 appearance change bug (and how the devs had to work around it in order to get Merrill to take her clothes off despite DA2's never-nude agenda), it will certainly be edifying to explain what exactly, in the context of DAO/DA2, "appearance" refers to.
You see, most of the functionality in these games is built on the back of a vast array of spreadsheets, and one of these spreadsheets is a great big file named APR_base.
Starting with Origins, APR_base contains a whole big pile of information about how creatures should look, which models are valid for their use, what animations they should use, if they have binary gender, how high the cutscene camera should be when they're in focus, how quickly they move, what lootable model should be left behind when they die, etc.
And I apologize in advance for using the word "type" so often and freely here. It was not my decision to refer to appearance types as themselves having types, but that's the terminology used in the game files. Regardless, there are four main "categories" of appearance, and to start, we're going to conflate the first two. With "Simple" (S) or "Welded" (W) models, the creature model is comprised of one single mesh. Dogs and wolves and bears use this type of appearance. Shades and ash wraiths and rage demons use this type of appearance as well.
There is a third appearance type, the "Parts" (P) type. This is the opposite of simple/welded. Rather than being comprised of one model, these creatures are built piecemeal from several different meshes - the head/headmorph, chest/torso, hands/gloves, feet/boots (or, alternatively, head + unibody). The "Elf" appearance is a "Parts" appearance type, as is the case for the "Dwarf," "Human," and "Qunari" appearance types. Every PC and nearly every NPC in the game, basically, uses one of these appearance types, with visual differences arising based on which headmorph and clothing or armor is applied.
There's a lot of game code and involved and a lot of other spreadsheets involved (seriously) but the end result is that you can take equippable items in the game and equip and unequip them from a creature with a parts-type appearance and the game will automagically display the correct model for their race/gender. Even if you take all their clothes off and make them run around in their tighty whiteys in the middle of Wintermarch in Ferelden, you monster.
That brings us to the fourth appearance type. The "Welded+Head" (H) type. This, perhaps quite obviously, falls between the Welded and Parts type appearances. The body is all one single mesh, but the head mesh (or headmorph) is selected separately. This allows for some quick variation and customizability, though obviously not to the extent of a Parts appearance. Genlocks and hurlocks have a couple of appearances (normal, alpha, emissary) and a couple of head models that can be mixed and matched. The same for humanoid undead like skeletons and corpses.
And now, let us turn our attention to: Duncan. Quite simply: Duncan is a never-nude. Allow me to explain.
Duncan is human, alright. He uses human animations. He has a human headmorph. His "rules race" is 3, as is the case for all humans. But he does not use the "Human" appearance type. He uses the "Duncan" appearance type. Which is a Head-type appearance. Duncan isn't "wearing" "clothes" and they can't be changed by equipping new armor or removed by unequipping his exisitng armor. He's locked into one pre-defined unibody mesh. You cannot take his clothes off and make him run around in the middle of Wintermarch in Ferelden. He's a never-nude. (Children, for the curious, are also never-nudes, as well as neuter gender. Fun fact for you!)
Duncan is one of a very, very few non-P-type humanoid NPCs in Origins.
In DA2, H-type becomes the rule, rather than the exception.
DA2 streamlines a number of things for simplicity. The many, many, many Item Variations spreadsheets in Origins got collapsed down into a single spreadsheet in DA2, for example. And APR_base got a makeover.
No longer is there one appearance type per race, with everything else being customized elsewhere through equipment and the like. Oh, they do still have generic equippable Parts-type appearances for some NPCs, like "NPC - Human, Male" and "NPC - Elf, Female," that function more or less like they did in Origins, but they've gone far, far beyond that point.
Now male Hawke has his own very special big boy appearance type, as does female Hawke... and then they have another appearance type each for their home clothing. And another for their fancy dress at the fancy dress party in Mark of the Assassin. And yet another appearance type for the sneaky walking during the MotA stealth sequence (APR_base dictates which animations are used, after all, if you'll recall). These are all H-type with specific unibody models attached, except for Hawke's main appearance type which is, obviously, a P-type appearance type. DA2 doesn't bother to change your equipment out to make you put on your home clothes. They just temporarily convert Hawke to a never-nude.
Orsino and Meredith are never-nudes. Anders? Never-nude. Goth Anders? Slightly different flavor of never-nude. Isabela and romanced Isabela? Believe it or not, never-nudes. Same for Varric and interrogation cutscene Varric. Flemeth? Trick question, she's a Simple mesh, with her head, hair, and fancy headdress all permanently welded to her body in a single mesh. Fun fact for you! (So is Tallis. Completely immune to decapitation!) Cassandra? Never-nude. King Alistair? Never-nude. (Not, however, exiled Alistair.)
If you unlock your follower equipment slots and unequip the items in Anders' or Isabela's inventory, they won't take their clothes off. Their equipped "armor" is just a collection of stats.
So that's the explosion of NPC H-type appearance types in DA2, but DA2's dastardly never-nude agenda does not stop there. On the contrary, we're just getting started.
Something else DA2 accomplished with its streamlining of item variations and overhaul of APR_base was to collapse pretty much everything one needs to make a variety of generic NPCs without ever actually having to dip into equippable items. You see, the Parts-type appearances... can now also be never-nudes.
I linked above to a brief and technical explanation of how a series of spreadsheets turn a collection of armor models into an item variation, a single number that tells the game which models should be used when an item is equipped. DA2's APR_base has added several additional columns that allow one to input these item variations directly into APR_base itself, bypassing entirely the need to equip items on P-type creatures.
These columns, for example, tell the game that when Aveline is using her Act 1 appearance, she should use item variations 4002, 6002, and 7002—the chestpiece, boots, and gloves for Heavy Armor C. Unlike the H-type followers, if you unlocked Aveline's equipment slots and equipped whatever armor you want on her, she would indeed "wear" it and update her visual appearance accordingly. But if you took all her equipment off again, she'd still be standing there, wearing Heavy Armor C, impervious to most forms of physical attack.
Bethany and Carver are also P-type followers, but this is also widely used for many generic NPCs in the game. There are "pre-equipped" P-type appearances for many types of mages (ex. "Mages - Circle Mage - Male"), dalish elves (ex. "Dalish - Archer - Female"), city guards, raiders, templars, mercenaries, carta and coterie thugs, etc. All of which appear in predetermined item variations. It makes it much simpler to populate an area with a bunch of NPC mobs.
First we considered the case of Duncan in Dragon Age Origins. Now let's consider another unique case: Merrill.
Tell me, dear reader, why would Merrill, of all followers, use P-type appearances, rather than H-type? Unlike Aveline or Bethany or Carver, she never shares any outfit parts used by generic NPCs, such as Aveline's guard armor, Bethany's circle mage robes, and Carver's templar armor. Like the other followers, she uses unique unibody models created specifically and solely for her. It's more straightforward to plug the model path directly into APR_base as an H-type appearance than it is to go through the effort of setting it up first in item_variations so it can be used for a P-type appearance.
It is finally time to delve into the appearance change bug.
You see, because DA2 now relies so heavily on APR for very specific things, it does something that Origins does not widely do—outside of specific, temporary use-cases like shapeshifting—it dynamically switches the same character between using different, sometimes permanent appearances.
This was not the original, intended use of APR. In Origins, if you wanted a character to change into a different outfit, you wrote a few lines of code and swapped out their equipped item inventory. DA2 also added the ability to dynamically swap headmorphs, and thank god for that. The new SetHeadMorphName script function works beautifully. Chef's kiss. I love it. No notes. Changing appearance, on the other hand… has some issues.
Now, APR is vital and there are many things that can go wrong if it goes missing, but that's not really what I'm talking about. If Hawke is saved with an appearance type that no longer exists, for instance (say you deleted a mod or nuked APR_base from orbit), then your save will be bricked and unable to be loaded until this is resolved. And if a follower is saved with a non-existent appearance type? Oh, dear reader, when you load that save (and in this case it will load), your beloved follower will not be merely invisible—no, they will essentially cease to exist, as they will be deleted from the party pool. All their stats, equipment, approval? Gone, as though it never existed to begin with.
This is tragic but, again, that's not what I'm talking about.
Now let's say you have just initiated Isabela's romance and it's time to write a bit of code that will switch her to her romanced appearance. This is an H-type to H-type appearance change, and it works fine. Bethany's all grown up and joined the wardens. P-type to P-type, and it works. P-type to H-type? That works too.
But not H-type to P-type. And there it is. That's the appearance change bug! You can't take a creature with an H-type appearance and switch it to using a P-type appearance. It doesn't work!
Now hang on, you might say—if you've been taking notes on this as if there will be a quiz at the end, in which case, I'm sorry—doesn't Hawke switch from their H-type home clothes to their equippable P-type every time they leave the house? And it's here that I introduce a futher complication. Creatures can have two appearance types stored—their current appearance type, and their "original" appearance type. This is how it worked for shapeshifters in Origins. This is also how it works for Hawke. Their appearance is temporarily stored as their home appearance (remember, this change works!), but their "original" appearance is still their regular equippable appearance, and it's this that they default back to when they leave the house.
This is why Aveline, Bethany, and Carver have P-type appearances to start despite their unique unibody meshes. They need them in order for their later appearance changes throughout the game to function smoothly, despite the bug. If the appearance types stay consistent, you can ensure the appearance changes will work.
Now let's say you're working on Merrill's romance cutscene and you get to the note in the script that says "Merrill takes her clothes off," because, you know, someone went to the trouble to model that corset, and it would be a shame not to use it.
Unfortunately, as we've discovered, everyone who's anyone in Kirkwall is a never-nude, so how does one accomplish this? Well, first, we'll need to change her to an old-school generic appearance type, like they used back in the wild frontier of Dragon Age Origins, when they wandered clothesless through the Korcari Wilds. Temporarily change her to the generic "NPC - Elf, Female" appearance type, and she's already not wearing "actual" "equippable" "clothes," so nature will take its course automatically.
Except that's a P-type appearance! And Merrill has probably, at this point, been set up with an H-type appearance, as have most of the other followers in the game, and that just so happens to be the one change that doesn't work. And perhaps the appearance bug is already well documented by this point, but you have a deadline of yesterday and a budget of a few paperclips and a quarter somebody found between the couch cushions in the break room, so nobody can spare the time to fix it. You'll have to find a workaround or give up on the corset entirely, and we're not giving up on the corset idea, and I suppose by now you might see the solution for yourself.
I do believe, after all the nonsense I went through trying to get timeskip appearance changes to work consistently in da2, that probably the only way I could see myself pursuing that in the future would be as an extension of an "equip your followers" type mod with special custom equipment at act changes and other big moments. the origins method rather than the da2 method, basically. I know that when I surveyed people initially about such an implementation like five years ago not many people were for it, but I do think it's cleaner and superior—at the very least on the "not overcomplicating uninstallation and bricking your save if you do it wrong" front, which is a pretty big pro for me, the person who would have to listen to people complaining about their bricked saves, to consider
I'm once again reminded that one of the reasons I had to shelve the appearance portion of timeskip (the part which changes their outfits) is that if uninstalled improperly it can permanently delete your followers from the party pool lmao
ok hang on i need to reprioritize my mods in progress again
1. twinception - this will be published by the time I finish juniper’s playthrough, I’m so close, it’s the entire reason I’m doing this pt in the first place
2. timeskip (headmorph module only) - lbr this part has been done for ages and the only thing I’ve been doing since is fighting with the appearance aspect of timeskip. lower priority than twinception because I need to pry it out of the framework, tutorialize how to use it, and supply some simple headmorph mods for use with it, but I’m 100% sure it’s playtested and publishable basically as-is. I’ll be making it standalone at some point during this playthrough but not banging out all the supplemental cruft that needs to be published with it until afterwards.
3. I need to update my dialogue modding tutorial to include all the new stuff I’ve learned before I forget it all.
4. whatever the hell I’m calling this general dialogue improvement mod - will bang out as much of this during the playthrough as I feel like but won’t stress about completion.
5. zrdf director’s cut - I think this is completely done actually and I just never bit the bullet on publishing it for reasons now lost to time (probably I just forgot). need to double check that at some point probably.
6. import vault fixes - I’ve been ignoring the fixes I need to do to this long enough I do need to force myself get back to it.
7. timeskip (appearance module) - naughty mod goes in the punishment box
like basically the headmorph-changing aspect of timeskip has 1) fewer and less severe problems that need to be worked around than the appearance-changing aspect of timeskip and 2) most of these problems became apparent long before many of the problems with the appearance-changing became apparent, so I’ve had far more time to tailor my approach to compensate for them.
as an example, if you uninstall the headmorph part incorrectly your companions will be running around without heads which is obviously a problem but not game-breaking. if you uninstall the appearance part incorrectly your companions will become completely invisible and unselectable in game and/or you’ll make your save impossible to open without save editing to manually fix the problem. that’s! a very different level of problematic!
so anyway the headmorph part ~is complete~ and it’s ridiculous to keep it held hostage for any longer just because the appearance part is being a lil bitch so. I will be working on excising it from timeskip and releasing it standalone. mostly because I only just uninstalled timeskip before beginning this playthrough and I already miss it so much it pains me.