hi hi! sorry to bug you, feel free to ignore this ask if its not of interest to you. ive been messing around w renpy for a few months now (im less a coder and more an overly ambitious artist deciding diving in is a GREAAAT idea) and i came across your incredible Portrait System script! ive been trying to find a good animated modular spriting system (godot is kicking my ass and vn maker is not modular NOR backwards compatible for older systems ive heard), and renpy has a lot of built-in accessibility features and flexibility id like to take advantage of. and your portrait system is. MWUAH. CHEFS KISS. ๐
i suppose my question is, do you know how to or would you consider adding a feature that allows for hairstyles or a top layer to be swapped out? im hoping to make a game with a metric butt ton of alternate outfits and i figured alt hair that can go over the eyes and mouth (like for masks and such) would save on disk space while giving a lot of flexibility for character sprites. as someone who actually knows what the flip they're doing whats ur take? again, not urgent, so you dont need to grace this with an answer if ur not feelin like it ๐ (ps i really like ur art style! ur color palettes are GORGEOUS)
awawawa, it always surprises me to hear people using the Portrait System script. (My own Ren'py endeavours are so neglected.)
So while I don't intend to implement alternate outfits/hair/etc into the script itself, it shouldn't be too hard to do using Ren'py's existing functions - by using Composite.
image tamati neutral grey = Flatten(Composite((744, 1787), (0, 0), Portrait("tamati", "neutral", (298, 209), (339, 277)), (0, 0), "char/tamati/neutral_greyhair.png"))
In this example, besides Flatten, Composite takes arguments for image dimensions, and then pairs of co-ordinates and image objects. So it's using neutral Tamati's dimensions, 0, 0, neutral Tamati's portrait, 0, 0, and then a haphazard edit to bleach his hair.
Composite is what I messed with originally for eyes/mouth stuff, but I felt it would be unnecessarily wordy for how many possible expressions a given game might have.
However I will admit that this actually runs into the same problem, but instead with other parts of a portrait. You'd need to make alternate image arguments for every alternate outfit that exists per portrait. Per combination too.
You might be able to set the secondary layers to a variable, but off the top of my head I'm not sure how you'd do that, and it might require delving into dynamic displayables.
Sorry, I guess this is a long-winded way to say "you can do this with existing Ren'py stuff but I'm not sure I plan to implement this feature into the script itself". (Unless whenever I get to Twelve Thousand I realise this will be really helpful personally.)
also right now I've been finding this script is broken for me anyway and has been for ages and I'm losing my mind