When I started working on TiTS, the “Creature” data type, descriptor functions, and appearance screen were some of the first things to get cobbled together (along with character creation). At the time, I intended the appearance screen to be usable by any “Creature” in the game, not just the player character.
That never happened, because if I had done so, I would have probably doubled the lines of code in order to do with it – having variants with “you have” and “[target.heShe] has”. As of a few days ago, there were approximately 4,300 lines of code in appearance.as.
I finally did it. Of course I leaned on ternary operators so as not to bloat the linecount, but I can now feed any NPC (with properly set statistics) into the appearance function and get an appearance similar to the player character’s. It was a real bear, believe me, but some of the hilarity I discovered when testing almost made up for it.
For instance – did you know that Anno’s statblock had balls? When I made her, I started from a copy/paste of Syri with some edits and apparently forgot to give her a thorough neutering.
What’s the advantage of doing all that extra work? Well for enemies with fully fleshed out stat-lines, I can add an appearance button that lets you take a more exacting look at their body that the single paragraph of fluff. It also sets the stage to more easily display highly customizable NPCs if I ever go that crazy.
Oh, and I wrote a new scene for a Zheng Shi enemy and coded in Tessa’s bust too.