Promote multi-person hardcore action routing

This commit is contained in:
2026-06-27 19:19:37 +02:00
parent 658743d876
commit 2b41a82869
6 changed files with 150 additions and 7 deletions
+55 -4
View File
@@ -113,6 +113,29 @@ def _character_cast(*, pov_man: bool = False) -> str:
)["character_cast"]
def _character_cast_subjects(subjects: list[str] | tuple[str, ...]) -> str:
cast = ""
counts = {"woman": 0, "man": 0}
for subject in subjects:
subject = str(subject)
counts[subject] += 1
label = chr(ord("A") + counts[subject] - 1)
cast = pb.build_character_slot_json(
subject_type=subject,
label=label,
age="25-year-old adult" if subject == "woman" else "40-year-old adult",
ethnicity="western_european",
figure="balanced",
body="slim busty" if subject == "woman" else "average",
descriptor_detail="compact",
expression_intensity=0.55,
softcore_expression_intensity=0.35,
hardcore_expression_intensity=0.75,
character_cast=cast,
)["character_cast"]
return cast
def _random_character_cast() -> str:
cast = pb.build_character_slot_json(
subject_type="woman",
@@ -302,6 +325,30 @@ HARDCORE_ROUTE_CASES = (
"caption": ("anal action",),
},
},
{
"name": "hardcore.single.threesome",
"subcategory": "Threesomes",
"focus": "threesome_only",
"family": "threesome",
"expected_route": {"action_family": "threesome", "position_family": "threesome"},
"expected_terms": {
"krea": ("three",),
"sdxl": ("threesome",),
"caption": ("three-person action",),
},
},
{
"name": "hardcore.single.group",
"subcategory": "Group sex and orgy",
"focus": "group_only",
"family": "group",
"expected_route": {"action_family": "group", "position_family": "group"},
"expected_terms": {
"krea": ("group",),
"sdxl": ("group sex",),
"caption": ("group action",),
},
},
{
"name": "hardcore.single.climax",
"subcategory": "Cumshot and climax",
@@ -309,7 +356,7 @@ HARDCORE_ROUTE_CASES = (
"family": "climax",
"expected_route": {"action_family": "climax", "position_family": "climax"},
"expected_terms": {
"krea": ("ejaculation",),
"krea": ("semen",),
"sdxl": ("climax", "semen"),
"caption": ("climax action",),
},
@@ -734,6 +781,10 @@ def _regular_single_case(seed: int) -> dict[str, Any]:
def _hardcore_single_case(seed: int, subcategory: str, focus: str, family: str) -> dict[str, Any]:
women_count, men_count, character_cast = {
"threesome": (1, 2, _character_cast_subjects(("woman", "man", "man"))),
"group": (2, 2, _character_cast_subjects(("woman", "woman", "man", "man"))),
}.get(family, (1, 1, _character_cast()))
return pb.build_prompt(
category="Hardcore sexual poses",
subcategory=subcategory,
@@ -754,9 +805,9 @@ def _hardcore_single_case(seed: int, subcategory: str, focus: str, family: str)
extra_positive="",
extra_negative="",
seed_config=pb.build_seed_lock_config_json(base_seed=seed),
women_count=1,
men_count=1,
character_cast=_character_cast(),
women_count=women_count,
men_count=men_count,
character_cast=character_cast,
hardcore_position_config=_position_filter(focus, family, []),
location_config=_coworking_location_config(),
camera_config=_orbit_camera(horizontal_angle=35, vertical_angle=0, zoom=6.5),