6.1 KiB
Fiche STG-C7a-IMPL — Niveau N3 — Modèle prévu claude-opus-5-5 | utilisé claude-opus-5-5 — Agent orchestrateur STG (session principale) — Skills lp-lot, sk-change-safety
STG-C7a-IMPL : joueur posé hors du siège qu'un Blueprint libère sans marche (2026-10-14)
GO de Big Boss du 2026-10-14 (C7-a de STG-COMMUN7-DIAG.md § A.5). Sans UE ni compilation ; VAL statique par un agent distinct ; il entre
au build COMMUN-8. Origine du défaut : Blueprint d'origine (estimé). L'essai 5.5 n'est pas fait, le développement 5.5 étant arrêté.
Lot STG, registre STG-TACHES.md.
Gardes demandées :
- jamais pendant le sexe ni pendant la marche ;
- point d'arrivée hors meuble et hors personne, sinon le joueur ne bouge pas et une ligne est écrite au journal ;
- ne pas casser D6 (se lever) ni KO3c.
1. Instantané
Snapshot.ps1 -Lot STG-C7a (état M1e + C6-b) : LPDirectControlSubsystem.cpp 44ACE47D29424101B4127BA12E789BEB, .h
ACFF924AE6E03548546EF3FB2E430EB8 (D:\Game\LifePlay_Backup_5.5\STG-C7a\manifest.csv).
2. Changements (STG-C7a.diff : 117 lignes ajoutées (recompte de la VAL), 0 retirée)
LPDirectControlSubsystem.h : la déclaration WatchSeatRelease(float), et les membres LastSeat (place au tick précédent),
PendingSeat et PendingSeatTime (place libérée en attente, -1 : rien).
LPDirectControlSubsystem.cpp (CRLF) :
TickappelleWatchSeatRelease(DeltaTime)à chaque tick, avant le choix entre blocage et marche. Le début de scène a lieu boîteScene_Couverte, alors queWalkn'est pas appelé.Walk: juste aprèsLeaveSeat,LastSeat,PendingSeatetPendingSeatTimesont remis à vide. Une place quittée en marchant (D6) n'est jamais surveillée.WatchSeatRelease:- Il lit
OccupyingFntdu joueur. Le passage de valide à nul (place libérée par un Blueprint) met la place en attente. - L'attente est annulée si :
- le joueur est de nouveau assis (même meuble ou autre) ;
SexOnest vrai (jamais pendant le sexe) ;- il n'y a plus de joueur.
- Après 0,5 s, il n'agit que si toutes ces conditions sont vraies :
- le meuble existe encore et appartient à la Room courante (pas de changement de pièce) ;
- la capsule est encore dans le meuble (
CapsuleInside) ; - aucune touche de marche n'est enfoncée et la vitesse 2D est ≤ 1 (jamais pendant la marche : LeaveSeat et KO3c s'en chargent).
- Points essayés, à 80 cm dans le lacet de la place : devant, à droite, à gauche, derrière. Pour chacun :
- descente de la capsule, avec ses propres réponses, de +30 cm à -demi-hauteur ; le sol touché doit être à 30 cm près de la hauteur actuelle (pas sur une table), et la capsule ne doit pas partir déjà enfoncée ;
- aucun recouvrement bloquant à l'arrivée (
OverlapBlockingTestByChannel, capsule réduite de 2 cm) : hors meuble ; - aucune personne visible à moins de 50 cm de bord à bord (centres à moins de 50 + 2 × rayon) : hors personne.
- Au premier point valable :
SetActorLocation(…, TeleportPhysics)et la ligneC7-a : place <meuble> liberee sans marche, joueur pose <devant|a droite|a gauche|derriere> a 80 cm du siege. - Sinon, le joueur ne bouge pas, avec la ligne
C7-a : place <meuble> liberee sans marche, aucun point libre a 80 cm, joueur laisse en place.
- Il lit
Signatures relues (UE 5.8) : UWorld::OverlapBlockingTestByChannel (World.h l. 2364) et UCapsuleComponent::GetCollisionShape(float Inflation) (CapsuleComponent.h l. 86). SCENE_QUERY_STAT, TActorIterator, AxisValue, CapsuleInside et ScenePlaying sont déjà
employés dans ce fichier.
3. D6, KO3c et cas de la scène
- D6 (se lever au premier pas) :
LeaveSeatest inchangé, et la surveillance est remise à vide dans le même tick. Aucun déplacement supplémentaire. - KO3c :
EscapeOverlapsetUpdateEscapesont inchangés. Si C7-a pose le joueur hors du meuble,UpdateEscaperend Pawn Block au volume quitté au tick suivant, comme à une sortie en marchant. - house_viewing (DIAG A) :
- la place est libérée à 07:35:03, et C7-a pose le joueur à 07:35:03,5, à 80 cm de la chaise ;
- William est créé 6 s plus tard et reçoit la place : 40 cm d'écart de bord à bord, au-delà de la règle des 10 cm.
- Scène de sexe : le sexe passe aussi par une libération de place. Si
SexOndevient vrai dans les 0,5 s, il n'y a pas de déplacement. SiSexOnarrivait plus tard, le placement du sexe (Blueprint) repose de toute façon les deux corps. Risque estimé faible, à voir à l'essai. - Pièce quittée (la place pointe vers un meuble détruit) : la référence faible tombe, et il n'y a ni attente ni déplacement.
4. Ce qui n'a pas été fait
- Compilation et essai : au build COMMUN-8.
- Le cas de l'annexe A.6 du DIAG (rassis sur
_18sans changement de position) n'est pas traité. C7-a n'y réagit pas : la place reste valide.
5. Points à confirmer à l'essai (à mettre dans la fiche COMMUN-8)
- Chambre 9 : s'asseoir sur la chaise, laisser venir « house viewing ». Attendu : la ligne
C7-a : … joueur pose devant a 80 cm, William sur la chaise, le joueur à côté, aucunCLOSEentre eux. - D6 : s'asseoir, puis ZQSD : le joueur se lève et marche (« le joueur quitte »), sans ligne
C7-a. - Sexe depuis une chaise : aucune ligne
C7-a, et le placement du couple est inchangé. - KO3c : comptoir du newsagent, sans régression.
6. MD5 après
| Fichier | MD5 |
|---|---|
LPDirectControlSubsystem.cpp |
1A74D6B724BD63F04E04FDA42682446D |
LPDirectControlSubsystem.h |
519E23DC9EB2809FA36C1BBF942A7667 |
7. Retour arrière (proposé, jamais lancé sans accord)
Restore.ps1 -Lot STG-C7a, qui ramène l'état M1e + C6-b (44ACE47D… / ACFF924A…). Avant tout, prendre l'instantané STG-C7a-retour.
8. Fichiers à commiter
Source/LifePlay/LPDirectControlSubsystem.cpp, Source/LifePlay/LPDirectControlSubsystem.h, Docs/Migration/etat/ST/STG/STG-C7a-IMPL.md,
Docs/Migration/etat/ST/STG/STG-C7a.diff.
Tours : 6