Dress people at generation from a separate apparel stream.

Wardrobes live on the person in people.json: everyday layers, textbooks per parallel, and chance-based bags from catalog data. Hauling and the carry cap are defs, not constants. The golden roster gains an items column; later family members shift because Hauling consumes extra appearance rolls. Old saves without items are dressed on load.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Leonid Pershin
2026-08-20 03:24:54 +03:00
co-authored by Cursor
parent d8f4958167
commit 37501c506a
43 changed files with 8883 additions and 1305 deletions
@@ -45,6 +45,9 @@ public class VanillaCoreTests
Assert.True(catalog.Things["PeShirt"].Pe);
Assert.True(catalog.Things["Textbook"].Portable);
Assert.Empty(catalog.Things["Textbook"].Layers);
Assert.Equal(0, catalog.Things["Textbook"].CarryChance);
Assert.Equal(1, catalog.Things["SchoolBag"].CarryChance);
Assert.Equal(11, catalog.Things["Phone"].Age?.Min);
Assert.Equal(1, catalog.Things.Values.Count(thing => thing.DefName == "Textbook"));
Assert.Equal([ColorTags.Bright], catalog.Colors["Red"].Tags);
Assert.Equal([ColorTags.Neutral, ColorTags.School], catalog.Colors["White"].Tags);
@@ -100,6 +103,8 @@ public class VanillaCoreTests
Assert.Equal(5f, catalog.BehaviorRules.DutyTravelWeight);
Assert.Equal(20f, catalog.BehaviorRules.NeedWeightAtZero);
Assert.Equal(6f, catalog.BehaviorRules.LunchWeight);
Assert.Equal(5f, catalog.BehaviorRules.CarryMassBase);
Assert.Equal(0.4f, catalog.BehaviorRules.OptionalApparelChance);
}
/// <summary>