Add hardcore foreplay action pool

This commit is contained in:
2026-06-26 12:02:26 +02:00
parent 20483ca019
commit 22df4f754f
5 changed files with 290 additions and 6 deletions
+36 -1
View File
@@ -875,9 +875,42 @@ def _is_oral_text(*parts: Any) -> bool:
)
def _is_foreplay_text(*parts: Any) -> bool:
text = " ".join(_clean(part).lower() for part in parts if _clean(part))
if not text:
return False
return any(
term in text
for term in (
"foreplay",
"pre-sex",
"before sex",
"before penetration",
"kissing",
"deep kiss",
"mouth-to-mouth",
"lips pressed",
"caressing",
"hands roaming",
"stroking skin",
"touching breasts",
"cupping a breast",
"hand on the cheek",
"cheek and jaw",
"fingers under the chin",
"undressing",
"removing clothing",
"removing clothes",
"pulling clothing",
"sliding straps",
"unbuttoning",
)
)
def _is_vaginal_penetration_text(*parts: Any) -> bool:
text = " ".join(_clean(part).lower() for part in parts if _clean(part))
if not text or _is_outercourse_text(text) or _is_oral_text(text):
if not text or _is_outercourse_text(text) or _is_oral_text(text) or _is_foreplay_text(text):
return False
if any(term in text for term in ("anal", "double penetration", "double-penetration", "toy-assisted", "strap-on")):
return False
@@ -952,6 +985,8 @@ def _hardcore_pose_anchor(role_graph: str, hard_item: str, composition: str = ""
position_text = _clean(axis_values.get("position", "")).lower()
if not text:
return ""
if _is_foreplay_text(role_graph, hard_item, composition, _axis_values_text(axis_values)):
return ""
if _is_outercourse_text(role_graph, hard_item, composition, _axis_values_text(axis_values)):
if any(term in text for term in ("boobjob", "titjob", "breast sex", "breast-sex")):
return "breast-sex outercourse pose"