LifePlay-Revival/Docs/Migration/etat/ST/STC/STC-T0-CART.md

53 lines
4.7 KiB
Markdown
Raw Normal View History

Fiche STC-T0 — Niveau N1 — Modèle prévu orchestrateur (Opus 5.5) | utilisé claude-opus-5-5 — Agent orchestrateur — Skills lp-lot, sk-protocol
# STC-T0 : valeurs de conception des 14 SpinBox de MainMenu face aux défauts de GI (2026-10-10)
Copie `D:\Game\LifePlay-master 5.8`, HEAD `20620f6`, éditeur 5.8.3 ouvert, lecture seule par MCP
(`ObjectTools.get_properties` sur `/Game/UI/MainMenu.MainMenu:WidgetTree.<SpinBox>` et `/Game/BPs/GI.Default__GI_C`,
lot de 14 lectures par `ProgrammaticToolset.execute_tool_script`). Aucune écriture.
> **Correctif (2026-10-10, après le diagnostic `STC-reponse-fable.md` § 1.3, établi)** : les colonnes Value, Min/Max et
> défaut GI restent justes ; le reste est à lire ainsi : (a) 14 SpinBox ont `Value` lié par liaison de propriété à
> `GI.<variable>` (aucun graphe, d'où le § 2 erroné) ; (b) la valeur écrite à la synchro est `Clamp(valeur liée)`, soit Min
> quand GI est nul (écriture sautée), `Clamp(GI.X)` sinon : seuls caméra et durée (Max 0) donnent 0.2, la colonne « Écart »
> ne s'applique pas ; (c) le 14e couple est `SpinBoxPregnancyTerm` (conception 0, Min 0.01, Max 3) ; `SpinBox_0` règle le
> flou de champ de la caméra de création de personnage et n'écrit pas dans GI ; (d) le dump cité date d'avant CHG-294.
## 1. Relevé (établi)
« Écrite à la synchro » = valeur que `OnValueChanged` passerait à `GI` pendant `SynchronizeProperties`, soit
`Clamp(Value, MinValue, MaxValue)` (`SSpinBox::CommitValue`, l. 1009-1013 du moteur 5.8.3 ; `FMath::Clamp` rend `Min` quand
`X < Min`). Toutes les bornes ont `bOverride_* = true`, `Delta = 0`.
| # | SpinBox | Variable GI | Value (conception) | Min / Max | Glisser Min / Max (`MinSliderValue` / `MaxSliderValue`, plage du glisser souris sur le champ ; aucun curseur affiché) | Écrite à la synchro | Défaut GI (CDO) | Écart |
|---|---|---|---|---|---|---|---|---|
| 1 | ChildGrowthMult | ChildGrowthMultiplier | 1 | 0.01 / 10000 | 0.01 / 10000 | 1 | 1 | non |
| 2 | ShadeDepth | ShadeDepth | 0.5 | 0 / 1 | 0 / 1 | 0.5 | 0.5 | non |
| 3 | SpinBoxBGA | Vol_BGA | 0 | 0 / 5 | 0 / 5 | 0 | 0.5 | **oui** (son coupé) |
| 4 | SpinBoxCameraSpeed | CameraSpeed | 0 | 0.2 / **0** | 0.2 / 10 | **0.2** | 3 | **oui** (÷ 15, ERR-057) |
| 5 | SpinBoxMarkerSize | MarkerSize | 28 | 1 / 100 | 1 / 100 | 28 | 28 | non |
| 6 | SpinBoxMoan | Vol_Moan | 0 | 0 / 5 | 0 / 5 | 0 | 1 | **oui** (son coupé) |
| 7 | SpinBoxPhysicsMult | PhysicsMult | 1 | 0 / 100 | 0 / 100 | 1 | 1 | non |
| 8 | SpinBoxSceneFrequency | SceneFrequency | 0 | 0.2 / 100 | 0.2 / 100 | 0.2 | 10 | **oui** (÷ 50) |
| 9 | SpinBoxSexDescription | SexLineDuration | 15 | 1 / 100 | 1 / 100 | 15 | 15 | non |
| 10 | SpinBoxSexDurationMultiplier | SexDurationMult | 0 | 0.2 / **0** | 0.2 / 10 | **0.2** | 2 | **oui** (÷ 10, ERR-057) |
| 11 | SpinBoxSex | Vol_Sex | 0 | 0 / 5 | 0 / 5 | 0 | 1 | **oui** (son coupé) |
| 12 | SpinBoxSquirtMult | SquirtMult | 0 | 0 / 100 | 0 / 100 | 0 | 2 | **oui** |
| 13 | SpinBoxUI | Vol_UI | 0 | 0 / 5 | 0 / 5 | 0 | 1 | **oui** (son coupé) |
| 14 | SpinBox_0 | PregnancyMultiplier | 0 (liée) | 0 / 20 | 0 / 20 | valeur de la liaison | 1 | voir § 2 |
Compte : 14 couples ; 5 sans écart (1, 2, 5, 7, 9) ; 8 avec écart non liés (3, 4, 6, 8, 10, 11, 12, 13) ; 1 lié (14).
`MaxValue = 0` avec `bOverride_MaxValue = true` sur les SpinBox 4 et 10 (la plage du glisser souris sur le champ va jusqu'à 10, mais la saisie est
bornée à 0 → ramenée à 0.2) : défaut de conception préexistant, constaté (établi), effet sur la saisie au clavier à vérifier.
## 2. Liaisons et Construct (établi, `list_graphs` + dump `etat\ST\STB\dumps\MainMenu__EventGraph.txt`)
- Une seule fonction de liaison de valeur : `Get_SpinBox_0_Value_0` (SpinBox_0 → PregnancyMultiplier ; R13 / R14).
- `Construct` : `GetGameInstance` → `Cast To GI` → `Set GI` → `UpdateDonors` → `Delay` … ; aucun `SpinBox::SetValue` dans
l'EventGraph de MainMenu (0 occurrence au dump) : les 13 SpinBox non liées ne sont pas alignées sur `GI` à l'ouverture.
- Conséquence (estimé) : l'affichage du menu montre les valeurs de conception (caméra 0.2, volumes 0…) et non les réglages ;
sans CHG-286, l'écriture à la synchro est sautée car `GI` est nul (`IsValid`). Toute reconstruction du widget Slate avec
`GI` déjà affecté (fermeture puis réouverture du menu) écrirait les 8 valeurs de la colonne « Écart » : à mesurer en STC-T1.
## 3. Suite
STC-T1 (PIE) : 14 variables de l'instance `GI` au démarrage, après la 1re ouverture du menu, après fermeture, après la
2e ouverture ; critère aucun écart. Le périmètre de la protection (SPEC) se tranche sur T0 + T1 : au minimum les 8 couples
à écart et la liaison de SpinBox_0.