Portrait Rework Project
Are you tired of 20-year-olds who look like they’re on their fifth divorce? And 10-year-olds who look like they should already be in elder care? Yeah. Me too.
Now, I know what some of you are saying, "Portrait Specification Framework already exists! And it’s great!" And to you I answer back, "Why use a perfectly fine wheel when we can reinvent the triangle?"
PRP allows you to customize how Elin assigns portraits to NPCs, by letting you define criteria that an NPC must meet to be assigned specific portraits. These are:
• title
• race
• sex
• age
PRP ships with a minimal configuration that makes vanilla portraits a bit more sensible, but it is NOT a magic ‘fix-all’ by itself. PRP is more like a framework, and shines when you add your own portraits and give them custom rules.
To make this process easier, PRP has a companion tool here: Elin Portrait Tool[anime-armada.neocities.org]
With it you can:
1) Drag & drop images
2) Assign tags (race / sex / title / age)
3) Export a ready-to-use .zip containing your images + rules
The tool runs entirely client-side, whether online or offline version, so do not move/rename/edit the images (or their folder paths) until you export. Otherwise you will end up with missing/corrupted data.
PRP reads rule files named: portraitReworkRules.cfg
(From here on our referred to as "rules.cfg")
Key Behavior:
• Multiple mods can include their own rules.cfg
• PRP merges all rules automatically
• If rules conflict, the last loaded mod wins
PRP supports two methods for defining rules;
You define portraits in a rules.cfg
In this method, filenames can be anything; the rules decide everything.
This is my personal preferred method, and is most easily done by using the companion tool.
If you don’t want to ship a rules.cfg, PRP can parse rules directly from filenames.
Example:
banker-mifu-female-adult-1.png
Format:
title-race-sex-age
Any missing segment is treated as Any.
Important: Filenames only matter when you’re not defining a portrait’s rules within rules.cfg.
PRP supports:
• New format: hyphens – between sections
• Legacy format: underscores _ between sections
Why the new format exists:
Titles can contain underscores (example: flower_girl), which can make legacy filenames hard to parse.
The new format also supports:
• Comma-separated options inside a section
• With arbitrary amounts of "–" separators between sections
Example of a comma-seperated filename:
flower_girl,banker,citizen-mifu,nefu-female-young,adult-1.png
Note that extremely long filenames might hit the Windows path limits.
PRP automatically merges all available rules from active mods, and resolves potential conflicts on the basis that the last loaded mod wins.
Mod A: portrait-1 = male only
Mod B: portrait-1 = female only
• Whichever mod loads last will control portrait-1.
Mod A (rules.cfg): defines mifu-female-1 for all mifu, regardless of sex
Mod B (loose file): has a loose file named mifu-female-1.png
If Mod A loads last, Mod A’s rules apply as defined in its rules.cfg.
If Mod B loads last, Mod B wins, and PRP uses the filename as the rule (because mod b was using loose files)
Just remember that the last loaded mod will win any conflicts, so sort your load order based on which mod’s Portraits you’d generally prefer to win in case of a conflict.
PRP intentionally does not touch unique NPCs such as Fiama and Loytel.
It does this by automatically excluding any NPC whose ID or portrait contains "UN_".
Additionally, any portrait (not NPC!) starting with "special_" is skipped
Elin uses "special_" to designate portraits which players can use, and NPCs cannot.
However, some NPCs use "special_" portraits exclusively (like the little girls), and so PRP does allow you to affect them, but only if you explicitly match their title. For example, the little girls’s title is shojo
PRP uses a "cooldown" system in an attempt to reduce repetitive portraits.
How it works:
• After a portrait is used, it goes on cooldown for a random 5–10 turns.
• Cooldown is a soft lock: PRP will prefer portraits not on cooldown.
• If every valid portrait is on cooldown, PRP will pick the one with the lowest cooldown.
• When a portrait could have been used but was skipped, its cooldown decreases by 1.
PRP does not require that a mod which ships a rules.cfg be the one that contains the actual portraits.
This means:
• You can upload rule packs without redistributing other’s art
• You could, in theory, create a single rule.cfg for every single existing portrait mod. PRP will quietly ignore rules for portraits that aren’t installed.
PRP does not automatically re-roll portraits in an existing save. Older versions did, but it was prone to issues.
Instead, PRP now adds a dialogue option: Regenerate Portrait w/PRP
This re-roll bypasses cooldown mechanics entirely.
I have a small example pack that includes portraits + a pre-made rules.cfg:
Example Pack
The example pack uses rules.cfg (Method A).
NSFW Warning: The example pack is NSFW. PRP itself is completely SFW.