diff --git a/node_scene.py b/node_scene.py index 93cd969..f0ed5a7 100644 --- a/node_scene.py +++ b/node_scene.py @@ -678,7 +678,7 @@ def _pair_options(soft_scene: dict[str, Any], hard_scene: dict[str, Any]) -> str hardcore_level=str(hard_options.get("hardcore_level") or "hardcore"), platform_style=str(hard_pair.get("platform_style") or soft_pair.get("platform_style") or "hybrid"), continuity=str(hard_pair.get("continuity") or soft_pair.get("continuity") or "same_creator_same_room"), - hardcore_clothing_continuity=str(hard_options.get("hardcore_clothing_continuity") or "explicit_nude"), + hardcore_clothing_continuity=str(hard_options.get("hardcore_clothing_continuity") or "partially_removed"), softcore_camera_mode=str(soft_options.get("softcore_camera_mode") or "from_camera_config"), hardcore_camera_mode=str(hard_options.get("hardcore_camera_mode") or "from_camera_config"), camera_detail=str(hard_options.get("camera_detail") or soft_options.get("camera_detail") or "from_camera_config"), @@ -2129,7 +2129,7 @@ class SxCPHardcoreBranchOptions: "hardcore_level": (list(INSTA_OF_HARDCORE_LEVELS), {"default": "hardcore"}), "hardcore_expression_enabled": ("BOOLEAN", {"default": True}), "hardcore_expression_intensity": ("FLOAT", {"default": 0.85, "min": 0.0, "max": 1.0, "step": 0.01}), - "hardcore_clothing_continuity": (HARDCORE_CLOTHING_CONTINUITY_CHOICES, {"default": "explicit_nude"}), + "hardcore_clothing_continuity": (HARDCORE_CLOTHING_CONTINUITY_CHOICES, {"default": "partially_removed"}), "hardcore_camera_mode": (HARDCORE_CAMERA_CHOICES, {"default": "from_camera_config"}), "camera_detail": (["from_camera_config"] + camera_detail_choices(), {"default": "from_camera_config"}), "hardcore_detail_density": (hardcore_detail_density_choices(), {"default": "balanced"}), diff --git a/tools/prompt_smoke.py b/tools/prompt_smoke.py index e2b58cf..c6c0490 100644 --- a/tools/prompt_smoke.py +++ b/tools/prompt_smoke.py @@ -16050,6 +16050,7 @@ def smoke_node_scene_chain_registration() -> None: -1, -1, ) + seed_fixture_scene = scene wardrobe_seed_options = nodes["SxCPSceneLayerSeedOptions"]().build("wardrobe", "fixed", 9981, "content", "same_for_all_rows", "replace_layer")[0] wardrobe_options = nodes["SxCPSceneWardrobeOptions"]().build( "replace", @@ -16198,6 +16199,73 @@ def smoke_node_scene_chain_registration() -> None: hard_trace_axes.get("pose", {}).get("seed") == 7799, "Scene Pair Output generation trace did not use hardcore branch pose seed", ) + soft_content_seed_options = nodes["SxCPSceneLayerSeedOptions"]().build( + "softcore_branch", + "fixed", + 6679, + "content", + "same_for_all_rows", + "replace_layer", + )[0] + seeded_soft_scene, seeded_hard_scene, _summary, _metadata = nodes["SxCPSceneBranchPair"]().build( + seed_fixture_scene, + "same_creator_same_room", + "hybrid", + branch_options=branch_options, + ) + seeded_soft_scene = nodes["SxCPSoftcoreBranchOptions"]().build( + seeded_soft_scene, + "same_as_hardcore", + "lingerie_tease", + True, + 0.45, + "from_camera_config", + "compact", + "", + branch_options=branch_options, + seed_options=soft_content_seed_options, + )[0] + default_hardcore_continuity = ( + nodes["SxCPHardcoreBranchOptions"].INPUT_TYPES() + .get("required", {}) + .get("hardcore_clothing_continuity", (None, {}))[1] + .get("default") + ) + _expect( + default_hardcore_continuity == "partially_removed", + "Hardcore Branch Options default should inherit softcore outfit continuity", + ) + seeded_hard_scene = nodes["SxCPHardcoreBranchOptions"]().build( + seeded_hard_scene, + "couple", + 1, + 1, + "hardcore", + True, + 0.85, + default_hardcore_continuity, + "from_camera_config", + "compact", + "balanced", + "", + branch_options=branch_options, + )[0] + seeded_pair = json.loads(nodes["SxCPScenePairOutput"]().build(seeded_soft_scene, seeded_hard_scene)[7]) + seeded_soft_item = str(seeded_pair.get("softcore_row", {}).get("item") or "").lower() + seeded_hard_clothing = str(seeded_pair.get("hardcore_clothing_state") or "").lower() + seeded_hard_prompt = str(seeded_pair.get("hardcore_prompt") or "").lower() + _expect( + "black lace lingerie" in seeded_soft_item, + "Scene softcore branch content seed fixture no longer selects the expected outfit", + ) + _expect( + "black lace lingerie" in seeded_hard_clothing, + "Hardcore prompt did not inherit the softcore-branch seeded woman outfit", + ) + _expect( + "black lace lingerie" in seeded_hard_prompt, + "Hardcore prompt text did not include the softcore-branch seeded woman outfit", + ) content_pose_seed_options = nodes["SxCPSceneLayerSeedOptions"]().build( "hardcore_branch", "fixed",