Clean up outercourse prompt wording
This commit is contained in:
@@ -1404,6 +1404,46 @@ def _dedupe_toy_double_detail(detail: str) -> str:
|
||||
return _clean(detail).strip(" ,;")
|
||||
|
||||
|
||||
def _dedupe_outercourse_detail(detail: str, role_graph: str, hard_item: str = "", axis_values: Any = None) -> str:
|
||||
detail = _clean(detail)
|
||||
if not detail:
|
||||
return ""
|
||||
context = _position_context_text(role_graph, hard_item, "", axis_values)
|
||||
context_lower = context.lower()
|
||||
breast_sex = any(term in context_lower for term in ("boobjob", "titjob", "breast sex", "breast-sex"))
|
||||
clauses: list[str] = []
|
||||
for clause in _detail_clauses(detail):
|
||||
lower = clause.lower()
|
||||
if breast_sex:
|
||||
if lower in ("penis", "breasts", "mouth clearly visible"):
|
||||
continue
|
||||
if any(
|
||||
term in lower
|
||||
for term in (
|
||||
"boobjob",
|
||||
"titjob",
|
||||
"breast-sex",
|
||||
"breast sex",
|
||||
"seated titjob position",
|
||||
"kneeling boobjob position",
|
||||
"tight close-up breast-sex position",
|
||||
"penis shaft compressed between breasts",
|
||||
"penis squeezed between both breasts",
|
||||
"hands pressing the breasts tightly",
|
||||
"hands pressing breasts firmly together",
|
||||
"fingers spreading the breasts around the penis shaft",
|
||||
"soft flesh squeezed around the penis shaft",
|
||||
"hand wrapped around the penis shaft",
|
||||
"glans near the mouth",
|
||||
"glans visible",
|
||||
"penis, breasts, and mouth clearly visible",
|
||||
)
|
||||
):
|
||||
continue
|
||||
clauses.append(clause)
|
||||
return _join_detail_clauses(clauses)
|
||||
|
||||
|
||||
def _detail_clauses(detail: str) -> list[str]:
|
||||
return [part.strip(" ,;") for part in re.split(r",\s*(?:and\s+)?", _clean(detail)) if part.strip(" ,;")]
|
||||
|
||||
@@ -1727,6 +1767,7 @@ def _hardcore_action_sentence(
|
||||
role_graph = _climax_role_graph(role_graph, hard_item, axis_values)
|
||||
detail = _hardcore_item_detail(hard_item)
|
||||
anchor = _hardcore_pose_anchor(role_graph, hard_item, composition, axis_values)
|
||||
is_outercourse = _is_outercourse_text(role_graph, hard_item, composition, _axis_values_text(axis_values))
|
||||
if _is_toy_assisted_double_text(role_graph, hard_item, composition, _axis_values_text(axis_values)):
|
||||
role_graph = re.sub(
|
||||
r"\s+while a toy adds (?:the|a) second penetration point\b",
|
||||
@@ -1737,6 +1778,10 @@ def _hardcore_action_sentence(
|
||||
if is_climax:
|
||||
anchor = ""
|
||||
detail = _dedupe_climax_detail(detail, role_graph, detail_density)
|
||||
elif is_outercourse:
|
||||
anchor = ""
|
||||
detail = _dedupe_outercourse_detail(detail, role_graph, hard_item, axis_values)
|
||||
detail = _limit_detail_for_density(detail, detail_density, False)
|
||||
else:
|
||||
detail = _dedupe_hardcore_detail(detail, anchor) if anchor else detail
|
||||
if _is_toy_assisted_double_text(role_graph, hard_item, composition, _axis_values_text(axis_values)):
|
||||
|
||||
Reference in New Issue
Block a user