88 lines
5.4 KiB
Markdown
88 lines
5.4 KiB
Markdown
|
|
# CAM-B2p-G-PC : C3 dans le cycle C du sexe (G-d) et panneau des positions (G-g) (PC, fiche lp-mcp-bp, 2026-10-14)
|
||
|
|
|
||
|
|
SPEC : `CAM-B2p-G-SPEC.md` § 2 (G-d, option 1) et § 5.4 (G-g). UE-GO de Big Boss (PC pour G-d, et G-g si la DIAG le
|
||
|
|
demande : elle le demande). PC seul ; ni Room, ni GI, ni Person. **Un seul appel MCP à la fois. Type vérifié avant
|
||
|
|
chaque `create_node`.**
|
||
|
|
|
||
|
|
## Barème
|
||
|
|
a0 b1 c1 d0 e1 f1 = 4 → N3 (MCP) ; S = C3 1 + f 1 = 2 : une fiche. Environ 6 nœuds, 1 variable, 2 coupures,
|
||
|
|
14 liens, environ 50 appels. Case C9a : état du PC relu dans `CAM-B2kmn-VAL_LPDumpFunction_20261014-011816.txt` (PC
|
||
|
|
`F45BE57A39D13D3EB19D0B543153AB0B`, 1439 nœuds) ; à relire par `get_node_infos` avant écriture.
|
||
|
|
|
||
|
|
## Conditions d'entrée
|
||
|
|
- `UeState` = 0 ; PC = `F45BE57A39D13D3EB19D0B543153AB0B` (sinon : arrêt et compte rendu).
|
||
|
|
- Instantané pris par l'orchestrateur : `.\Tools\Snapshot.ps1 -Lot CAM-B2p-G-PC -Path Content\BPs\PC.uasset`.
|
||
|
|
- unreal-mcp connecté ; éditeur sans demande de recompilation.
|
||
|
|
|
||
|
|
## État attendu avant écriture (préfixe `/Game/BPs/PC.PC:EventGraph.`)
|
||
|
|
| Nœud | Attendu |
|
||
|
|
|---|---|
|
||
|
|
| `K2Node_IfThenElse_23` | Condition ← `VariableGet_51.SexOn` ; then → `IfThenElse_44.execute` ; else → `IfThenElse_131` |
|
||
|
|
| `K2Node_IfThenElse_44` | execute ← `23.then` et `CustomEvent_5.then` ; Condition ← `CallFunction_139` ; then → `VariableSet_25` (`POVOn` vrai) ; else → `VariableSet_30` (`POVOn` faux) |
|
||
|
|
| `K2Node_IfThenElse_123` | Condition ← `VariableGet_233.SexOn` ; then → `CallFunction_35` (`LeftMouseSexOn`) ; else → `IfThenElse_0` |
|
||
|
|
| `K2Node_IfThenElse_15` | Condition ← `VariableGet_22.SexOn` ; then → `IfThenElse_10` ; else → `CallFunction_160` |
|
||
|
|
| `K2Node_CustomEvent_11` | événement `LeftMouseSexOn` ; then → `IfThenElse_10` |
|
||
|
|
| `K2Node_InputAction_3` | action **`Pause`** (à confirmer par `get_node_infos` : nom de l'action) ; Pressed → `IfThenElse_63` |
|
||
|
|
| `K2Node_IfThenElse_40` | execute ← `63.else` ; then → `CallFunction_277` (`PlayClick`) |
|
||
|
|
| `K2Node_CallFunction_277` | then → `VariableSet_0` (`GamePaused` = NOT `GamePaused`) |
|
||
|
|
|
||
|
|
Si `InputAction_3` n'est pas `Pause` (barre espace), ou pour tout autre écart : arrêt avant écriture de G-g.
|
||
|
|
G-d peut se faire seul.
|
||
|
|
|
||
|
|
## Écritures
|
||
|
|
### G-d : `SexC3`
|
||
|
|
1. Variable de membre `SexC3` (booléen, défaut faux) dans le PC (outil d'ajout de variable de BlueprintTools, comme
|
||
|
|
pour `CamC1On` en B1). Relecture.
|
||
|
|
2. Nœuds :
|
||
|
|
- Branche A, Condition ← nouveau Get `SexC3` ;
|
||
|
|
- Set `SexC3` = faux (S0) ;
|
||
|
|
- Branche B, Condition ← nouveau Get `POVOn` (variable du PC) ;
|
||
|
|
- Set `SexC3` = vrai (S1).
|
||
|
|
3. Liens :
|
||
|
|
- `23.then` → `A.execute` (remplace 23.then → 44) ;
|
||
|
|
- `A.then` → `S0.execute` ; `S0.then` → `44.execute` ;
|
||
|
|
- `A.else` → `B.execute` ;
|
||
|
|
- `B.then` → `44.execute` ;
|
||
|
|
- `B.else` → `S1.execute` ; `S1.then` vide.
|
||
|
|
|
||
|
|
`44.execute` garde aussi `CustomEvent_5.then`.
|
||
|
|
4. Effet : Scene (`POVOn` faux, `SexC3` faux) → C → C3 (`SexC3` vrai, vue inchangée) → C → `SexC3` faux, puis POV 1
|
||
|
|
→ … → dernier POV → C → Scene (voie d'origine de 44.else).
|
||
|
|
|
||
|
|
### G-g : panneau des positions
|
||
|
|
5. `break_pins` `123.then` → `35.execute` (le clic court gauche ne bascule plus le panneau pendant le sexe).
|
||
|
|
6. `break_pins` `15.then` → `10.execute` (même chose pour l'autre bouton).
|
||
|
|
7. Branche S (Condition ← nouveau Get `SexOn` sur `GI` du PC, ou reprise d'un getter existant de `GI.SexOn`) entre
|
||
|
|
`40.then` et `277` :
|
||
|
|
- `40.then` → `S.execute` (remplace 40.then → 277) ;
|
||
|
|
- `S.else` → `277.execute` ;
|
||
|
|
- `S.then` → nouvel appel `LeftMouseSexOn` (événement personnalisé du PC, cible self) ; then vide.
|
||
|
|
8. Effet : pendant le sexe, Espace bascule le panneau au lieu de mettre en pause. Le clic molette est fait par le C++
|
||
|
|
(B2p-G). Hors sexe, rien ne change.
|
||
|
|
|
||
|
|
### Fin
|
||
|
|
9. Relecture de tous les nœuds touchés et de leurs voisins (23, 44, CustomEvent_5, 123, 15, 10, 35, 40, 277, 63, et
|
||
|
|
les nœuds créés). Aucun autre lien modifié.
|
||
|
|
10. `is_dirty` = vrai ; `compile_blueprint` avec warnings_as_errors = true ; `save_assets` [`/Game/BPs/PC`] seul ;
|
||
|
|
`Saving Package: /Game/BPs/PC` ; MD5 du PC ≠ `F45BE57A…` ; Room, GI et Person inchangés.
|
||
|
|
|
||
|
|
## Amendement B2p-G-PC-a (2026-10-14, arrêt de `lp-mcp-bp` à l'étape 7, décision de l'orchestrateur)
|
||
|
|
- Refus : `create_node "Variables|Sex|ObtenirSexOn"` → `does not exist`. Ce type n'apparaît que sous contexte (la
|
||
|
|
sortie d'un Get GI), et `create_node` passe un contexte vide (`blueprint.py:912`).
|
||
|
|
- **Option A retenue**, déjà prévue au § 7 (« reprise d'un getter existant de `GI.SexOn` ») :
|
||
|
|
- `VariableGet_22.SexOn` (déjà relié à `IfThenElse_15.Condition`) → `IfThenElse_134.Condition` (une sortie de
|
||
|
|
données peut alimenter plusieurs entrées) ;
|
||
|
|
- `delete_node` du Get GI orphelin `VariableGet_387` ;
|
||
|
|
- puis les 3 liens d'exécution : `40.then` → `134.execute` (remplace 40 → 277), `134.else` → `277.execute`,
|
||
|
|
`134.then` → `CallFunction_408.execute` (`LeftMouseSexOn`) ;
|
||
|
|
- puis les étapes 9 et 10.
|
||
|
|
- Volume : 1 nœud créé de moins, 1 suppression. Le reste de la fiche ne change pas.
|
||
|
|
|
||
|
|
## VAL (lp-validator distinct, éditeur fermé)
|
||
|
|
- V5 : dump du PC ; diff contre `CAM-B2kmn-VAL_LPDumpFunction_20261014-011816.txt` ; seules différences : la
|
||
|
|
variable, les nœuds créés, les 2 coupures et les liens ci-dessus.
|
||
|
|
- V6 : `CompileAllBlueprints` = référence.
|
||
|
|
|
||
|
|
## Retour arrière
|
||
|
|
`.\Tools\Restore.ps1 -Lot CAM-B2p-G-PC -Only Content\BPs\PC.uasset`, éditeur fermé.
|