Improve POV outercourse body cues

This commit is contained in:
2026-06-25 17:05:13 +02:00
parent 5cf1b43a3e
commit e45bd67c5b
3 changed files with 49 additions and 34 deletions
+19 -10
View File
@@ -474,28 +474,28 @@ def _pov_hardcore_pose_sentence(
if _is_outercourse_text(context, action_lower):
if any(term in context for term in ("boobjob", "titjob", "breast sex", "breast-sex")):
return outercourse_sentence(
"The woman kneels low between the viewer's thighs, chest directly over his pelvis; "
"both hands press her breasts tightly around the viewer's penis, with the penis shaft vertical in the lower foreground and the glans just below her lips"
"The woman kneels between the viewer's open thighs with her torso bent forward over his pelvis and shoulders low; "
"both hands lift and press her breasts tightly around the viewer's penis shaft in the lower foreground, with the glans just below her lips"
)
if any(term in context for term in ("testicle", "balls licking", "balls-licking", "balls and mouth")):
return outercourse_sentence(
"The woman kneels very low between the viewer's thighs, face below the penis shaft at testicle height; "
"her mouth and tongue contact the viewer's balls while his penis points upward above her forehead in the lower foreground"
"The woman kneels very low between the viewer's open thighs with her torso bent forward and shoulders between his knees; "
"her head is tucked under the penis shaft at the base of the penis, mouth and tongue licking the viewer's balls while his penis points upward above her face in the lower foreground"
)
if any(term in context for term in ("penis licking", "penis-licking", "tongue along", "tongue licking")):
return outercourse_sentence(
"The woman kneels close at the viewer's pelvis, face just above his hips; "
"her tongue runs along the underside of the penis from the penis shaft to the glans while one hand steadies the base of the penis in the lower foreground"
"The woman bends forward between the viewer's open thighs, head low under the viewer's penis with her face directly under the penis; "
"her tongue runs along the underside from the penis shaft to the glans while one hand steadies the base of the penis in the lower foreground"
)
if any(term in context for term in ("handjob", "hand job", "hand wrapped", "hand stroking", "manual stimulation")):
return outercourse_sentence(
"The woman kneels close at the viewer's pelvis with her face behind the penis shaft; "
"one hand wraps around the penis shaft and the other steadies the base of the penis as she strokes toward the glans in the lower foreground"
"The woman kneels between the viewer's open thighs with her torso leaning forward and face visible behind the penis shaft; "
"one hand wraps around the penis shaft in the lower foreground while the other hand steadies the base of the penis as she strokes toward the glans"
)
if any(term in context for term in ("footjob", "soles", "toes curled", "feet stroking")):
return outercourse_sentence(
"The woman faces the viewer with both legs raised toward the camera; "
"her soles wrap around the penis in the lower foreground, toes curled around the penis shaft with her face visible beyond the contact"
"The woman faces the viewer with her hips back, torso visible behind her raised legs, and both knees bent open toward the camera; "
"her soles wrap around the penis shaft in the lower foreground, toes curled around the penis shaft with her face visible beyond her feet"
)
return outercourse_sentence(
"The woman stays close to the viewer's pelvis, keeping the non-penetrative contact centered in the lower foreground with her face visible behind the contact"
@@ -794,17 +794,24 @@ def _is_outercourse_text(*parts: Any) -> bool:
"breast sex",
"breast-sex",
"testicle",
"balls",
"balls licking",
"balls-licking",
"breasts tightly around",
"breasts around",
"penis licking",
"penis-licking",
"tongue along",
"tongue runs along",
"tongue running along",
"handjob",
"hand job",
"hand wrapped",
"hand stroking",
"hand wraps around",
"manual stimulation",
"footjob",
"soles wrap around",
"soles",
"toes curled",
"feet stroking",
@@ -1773,6 +1780,8 @@ def _composition_phrase(
if composition_oral_tokens and not any(token in action_lower for token in composition_oral_tokens):
match = re.search(r"\bwith\s+(.+)$", composition, flags=re.IGNORECASE)
return f"framed with {match.group(1)}" if match else ""
if _is_outercourse_text(action_lower):
return f"{prefix} {composition}"
position = _action_position_phrase(action)
close_or_aftermath = any(
token in composition_lower