Package roles
Package/@Type in your package.xml declares what kind of pack this is. The role decides how far your images reach, and since 1.20 the installer refuses packs whose shape disagrees with the role they claim.
There are four spellings. Anything else is treated as Content, so a typo can never quietly gain the reach that Defaults has.
| Type | What it is |
|---|---|
Content |
The default. A standalone pack that owns its characters. Its fallback art applies only to its own characters. |
Addon |
Extends the pack named in Extends=. Its art belongs to that pack, not to this one. |
Defaults |
A dedicated fallback-art provider. The only role whose images can reach characters owned by other packs. |
Override |
Reserved. The game recognises the name but gives it no behaviour yet, so it currently acts as Content. |
Type is optional. A pack with no Type is a Content pack.
The three image tiers
Section titled “The three image tiers”When the game needs an image for a character it looks in three places, in order:
- Her own folder.
<pack>/Characters/<Name>/, in the pack that owns her. - Fallback art for her pack. That pack’s own
Characters/Default/, plus the same directory from every installedAddonthatExtendsit. - Fallback art for everyone. The pools of every installed
Type="Defaults"pack.
A closer tier always wins, even over a better-matching image further out.
What no pack can do
Section titled “What no pack can do”Engine 1.20 does not support named-character image overlays. Tier 1 is closed to other packs: a character’s own art comes from her own folder, and nothing reaches into it. This is where the engine stands today, not a decision that the case will never be served; if it is served, it will be by a declaration you write, not by a folder name that happens to match.
Creating Characters/Sample Girl/ in your addon does not extend Sample_Full’s “Sample Girl”. It declares a character of that name owned by your pack, which is a different thing and usually not what you wanted.
If you want to contribute art to characters you do not own, that is what tiers 2 and 3 are for. You are giving them fallback art, not personal art.
An addon’s layout depends on what it extends
Section titled “An addon’s layout depends on what it extends”This is the rule that catches people out. An Addon’s shape is not decided by the role Addon alone. It is decided by the pair: Addon, plus the role of the pack it extends.
Addon extending a Content pack
Section titled “Addon extending a Content pack”Put your images in Characters/Default/ at the addon root.
resources/packages/MyAddon/ package.xml Type="Addon" Extends="target_pack" Characters/ Default/ Profile/ Wait/ images.xml optional: per-file tag overridesNamed pool directories at the root are not read at all in this shape. Art placed there is dead.
Addon extending a Defaults pack
Section titled “Addon extending a Defaults pack”Put your images in named pool directories at the addon root. They join the target provider’s pool.
resources/packages/MyDefaultsAddon/ package.xml Type="Addon" Extends="some_defaults_pack" kobold/ Profile/ orc/ Profile/The pool name is organisation and provenance today. It does not yet restrict which characters get offered which art.
Defaults packs
Section titled “Defaults packs”A Defaults pack is installed one level down, under resources/packages/defaults/, and may contain only art and the files that describe it: package.xml, named pool directories, an optional image-fallback.xml, and documentation.
resources/packages/defaults/catacombs_art/ package.xml Type="Defaults" NOTICE kobold/ Profile/ Combat/ orc/ Profile/Ship anything else, a .girlsx, a trait file, a job, a Lua script, and the pack is refused. Split it into a separate pack and connect the two with <Requires>.
A Defaults pack that ships no images at all is also refused: it provides nothing.
Known limitation: extending an empty provider
Section titled “Known limitation: extending an empty provider”An Addon that extends a Type="Defaults" pack which ships no images of its own contributes nothing at all. There is no pool for it to join, so its art is silently ignored even though the manifest is correct and the target is installed and enabled.
Make sure the pack you extend provides at least one image of its own. This is an engine limitation, not a rule you can author around.
What the installer checks
Section titled “What the installer checks”| Problem | Result |
|---|---|
Type outside the four spellings |
refused |
Type="Addon" with no Extends |
refused |
Defaults pack carrying gameplay content |
refused |
Defaults pack with no images |
refused |
A non-Defaults pack inside packages/defaults/ |
refused, and the game ignores it |
A Defaults pack still in the flat packages/ folder |
loads, with a warning to move it |
A Content pack whose only content is Characters/Default/ |
loads, with a warning |
That last one is worth reading twice if you published before 1.20. Fallback art used to be shared by every pack; it is now local to the pack that owns the character. A pack that was a global art pack before the change is now a pack that supplies art to nobody. Set Type="Defaults" and move it into packages/defaults/ to get the old reach back.