Implement phase 35 dress appropriateness and school rules.

Adds outfit evaluation, morning home dressing, locker-room ChangeClothes with day-log events, PE/weather AI goals, dress-rules API, and tests.
This commit is contained in:
Leonid Pershin
2026-08-20 05:16:52 +03:00
parent 5b63c72806
commit 6a0d5a9886
32 changed files with 1894 additions and 25 deletions
+21
View File
@@ -287,6 +287,27 @@ public sealed class BehaviorDef : Def
/// </summary>
public IReadOnlyList<ApparelConditionBand> ApparelConditionBands { get; init; } = DefaultConditionBands;
/// <summary>Younger pupils keep regular hemlines even when the school chose short form.</summary>
public int ShortFormMinAge { get; init; } = 13;
/// <summary>Everyday and short-form minimum formality on worn layers.</summary>
public int FormalityRegularMin { get; init; } = 20;
/// <summary>Strict-form minimum formality on worn layers.</summary>
public int FormalityStrictMin { get; init; } = 60;
/// <summary>Street below this °C expects an <see cref="ApparelLayers.Outer"/> layer.</summary>
public float OuterBelowC { get; init; } = 10f;
/// <summary>Above this street °C a fur coat is inappropriate.</summary>
public float HeavyOuterAboveC { get; init; } = 15f;
/// <summary>Walk to the locker room and change. Just above duty travel.</summary>
public float ApparelGoalWeight { get; init; } = 6f;
/// <summary>Game minutes for <c>ChangeClothes*</c> actions.</summary>
public float ChangeClothesMinutes { get; init; } = 5f;
public static IReadOnlyList<ApparelConditionBand> DefaultConditionBands { get; } =
[
new() { Min = 0.75f, Id = "ApparelConditionIntact" },