Wear worn clothes on campus and replace rags at the work morning.

Condition drops from catalog hours only while the person is at school; skip through the night issues the same fresh set as a lived night so the school does not walk in in rags.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Leonid Pershin
2026-08-20 03:49:11 +03:00
co-authored by Cursor
parent af90bb9f9d
commit 1ba739dd9b
20 changed files with 847 additions and 28 deletions
+3 -1
View File
@@ -72,7 +72,9 @@ internal sealed record WornItemResponse(
string Label,
string? Color,
string? ColorLabel,
IReadOnlyList<DefLabelResponse> Layers);
IReadOnlyList<DefLabelResponse> Layers,
float Condition,
string ConditionLabel);
internal sealed record CarriedItemResponse(
string DefName,
+5 -1
View File
@@ -288,7 +288,11 @@ internal static class PersonCardReader
ThingLabel(catalog, locale, item.Def),
item.Color,
ColorLabel(catalog, locale, item.Color),
layers));
layers,
item.Condition,
catalog is null
? ApparelCondition.BandId(null, item.Condition)
: ApparelCondition.Label(catalog, locale, item.Condition)));
}
return rows;
@@ -28,4 +28,14 @@
"carryMassPerHauling": 0.08,
// Sweater, coat, hat, accessory — each rolled separately at generation.
"optionalApparelChance": 0.4,
// Worn on campus only. 0.01 per hour → a school week (~40 h) drops a fifth of the bar.
"apparelWearPerHour": 0.01,
// Below this they do not leave home; morning issues a fresh instance of the same def.
"apparelReplaceBelow": 0.15,
"apparelConditionBands": [
{ "min": 0.75, "id": "ApparelConditionIntact" },
{ "min": 0.4, "id": "ApparelConditionWorn" },
{ "min": 0.15, "id": "ApparelConditionTorn" },
{ "min": 0, "id": "ApparelConditionRags" },
],
}
@@ -159,5 +159,10 @@
"WinterBreak": "Winter break",
"SpringBreak": "Spring break",
"SummerBreak": "Summer break",
"ApparelConditionIntact": "intact",
"ApparelConditionWorn": "worn",
"ApparelConditionTorn": "torn",
"ApparelConditionRags": "in rags",
"ApparelReplaced": "got a new {0}",
"core": "Core",
}
@@ -159,5 +159,10 @@
"WinterBreak": "Зимние каникулы",
"SpringBreak": "Весенние каникулы",
"SummerBreak": "Летние каникулы",
"ApparelConditionIntact": "целая",
"ApparelConditionWorn": "поношенная",
"ApparelConditionTorn": "порванная",
"ApparelConditionRags": "висит лохмотьями",
"ApparelReplaced": "получил новую {0}",
"core": "Базовая игра",
}