Intake the modular outfit pack and ship the Suit base for npc_coat
Full build / Import + headless tests (push) Successful in 42s
Full build / Full desktop build + optional release (push) Skipped

This commit is contained in:
zwitschi committed 2026-11-06 19:02:38 +01:00
1 parent f6bb2b1de3
commit 3b9e3b61d8
12 files changed
+254 -37

No files matched your search

+14 -2
View File
@@ -97,7 +97,7 @@ CHARACTERS = {
"npc_jacket": {"layer": "jacket", "hair": "short", "gear": ["lanyard", "clipboard"],
"base": "casual",
"roles": ["authorized_staff", "protester", "guest"]},
"npc_coat": {"layer": "coat", "hair": "long", "base": "hoodie",
"npc_coat": {"layer": "coat", "hair": "short", "base": "suit",
"gear": ["sunglasses", "shoulder_bag", "phone"],
"roles": ["influencer", "trespasser", "violent_threat"]},
"npc_vest": {"layer": "vest", "hair": "buzz", "gear": ["clipboard"],
@@ -1513,6 +1513,14 @@ QUATERNIUS_SOURCES = {
"Eye": "keep", "Eyebrows": "keep"},
"notes": "hoodie + shorts + white shoes (the hoodie covers the shoe uppers)",
},
"suit": {
"file": "Suit.glb",
"slots": {"Skin": "skin", "Suit": "cloth", "Suit_legs": "pants",
"Black": "accessory",
"Hair": "hair",
"Tie": "keep", "White": "keep", "Eye": "keep", "Eyebrows": "keep"},
"notes": "formal suit: jacket+trousers one fabric, white shirt and tie as fixed detail",
},
"worker": {
"file": "Worker.glb",
"slots": {"Skin": "skin", "LightBrown": "cloth", "Brown": "pants",
@@ -2083,7 +2091,11 @@ def _quaternius_slot_map(obj, slot_map):
index_of_slot = {}
resolved = []
for name, z in zip(source_names, centroids):
rule = slot_map.get(name, "keep")
# Imported parts carry `.001` duplicates of the base material; fall back to the
# base name so those still reach their slot instead of staying untinted.
rule = slot_map.get(name)
if rule is None:
rule = slot_map.get(_base_name(name), "keep")
if isinstance(rule, dict) and rule.get("split"):
slot = rule["above"] if z >= float(rule["z"]) else rule["below"]
key = ("keep", name) if slot == "keep" else ("slot", slot)