Promote multi-person hardcore action routing
This commit is contained in:
@@ -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),
|
||||
|
||||
Reference in New Issue
Block a user