Improve POV outercourse positioning
This commit is contained in:
+41
-14
@@ -336,6 +336,7 @@ HARDCORE_POSITION_KEY_CHOICES = [
|
||||
"boobjob",
|
||||
"testicle_sucking",
|
||||
"penis_licking",
|
||||
"handjob",
|
||||
"footjob",
|
||||
"open_thighs",
|
||||
"front_back",
|
||||
@@ -379,6 +380,7 @@ HARDCORE_POSITION_KEY_MATCHES = {
|
||||
"boobjob": ("boobjob", "titjob", "breast-sex", "breast sex"),
|
||||
"testicle_sucking": ("testicle", "balls-licking", "balls licking", "balls and mouth"),
|
||||
"penis_licking": ("penis-licking", "penis licking", "tongue along", "tongue licking"),
|
||||
"handjob": ("handjob", "hand job", "stroking the penis", "hand stroking", "manual stimulation"),
|
||||
"footjob": ("footjob", "soles", "toes curled", "feet stroking"),
|
||||
"open_thighs": ("thighs open", "legs spread", "open thighs", "legs open", "reclining with thighs open"),
|
||||
"front_back": ("front-and-back", "front and back", "one behind and one in front", "between two partners"),
|
||||
@@ -1023,6 +1025,8 @@ def _outercourse_acts_for_position(values: list[Any], position: str) -> list[Any
|
||||
return filtered(lambda text: any(term in text for term in ("testicle", "balls")))
|
||||
if "penis-licking" in position_text or "penis licking" in position_text:
|
||||
return filtered(lambda text: "licking" in text or "tongue" in text)
|
||||
if "handjob" in position_text or "hand job" in position_text:
|
||||
return filtered(lambda text: any(term in text for term in ("handjob", "hand job", "hand wrapped", "two-handed")))
|
||||
if "footjob" in position_text:
|
||||
return filtered(lambda text: any(term in text for term in ("footjob", "feet", "soles", "toes")))
|
||||
return values
|
||||
@@ -1070,6 +1074,15 @@ def _outercourse_axis_values_for_position(values: list[Any], position: str, axis
|
||||
"body_contact": ("hips", "body angled", "lower body"),
|
||||
}
|
||||
return filtered(by_axis.get(axis_name, ("tongue", "glans", "shaft")))
|
||||
if "handjob" in position_text or "hand job" in position_text:
|
||||
by_axis = {
|
||||
"contact_detail": ("hand", "fingers", "palm", "shaft", "glans"),
|
||||
"hand_detail": ("hand", "hands", "shaft", "penis"),
|
||||
"texture_detail": ("fingers", "pressure", "skin", "shaft"),
|
||||
"visibility": ("hand", "penis", "shaft", "glans"),
|
||||
"body_contact": ("hips", "knees", "body angle"),
|
||||
}
|
||||
return filtered(by_axis.get(axis_name, ("hand", "penis", "shaft")))
|
||||
if "footjob" in position_text:
|
||||
by_axis = {
|
||||
"contact_detail": ("soles", "toes", "shaft"),
|
||||
@@ -5100,38 +5113,48 @@ def _role_graph(
|
||||
if any(term in text for term in ("boobjob", "titjob", "breast-sex", "breast sex")):
|
||||
if man_is_pov:
|
||||
return (
|
||||
f"{woman} kneels between the POV viewer's thighs with her breasts squeezed around the POV viewer's penis, "
|
||||
"hands pressing both breasts together around the shaft while the glans stays near her mouth."
|
||||
f"{woman} kneels low between the POV viewer's thighs, chest directly over his pelvis, "
|
||||
"both hands pressing her breasts tightly around the POV viewer's penis while the glans sits just below her lips."
|
||||
)
|
||||
return (
|
||||
f"{man} sits with legs apart while {woman} kneels between his thighs, squeezing her breasts "
|
||||
f"around {man}'s penis with both hands while the glans stays near her mouth."
|
||||
f"{man} sits with legs apart while {woman} kneels low between his thighs, chest over his pelvis, "
|
||||
f"both hands pressing her breasts tightly around {man}'s penis while the glans sits just below her lips."
|
||||
)
|
||||
if any(term in text for term in ("testicle", "balls-licking", "balls licking", "balls and mouth", "balls held")):
|
||||
if man_is_pov:
|
||||
return (
|
||||
f"{woman} kneels between the POV viewer's thighs with her mouth at the POV viewer's balls, "
|
||||
"lips and tongue making visible contact while the POV viewer's penis remains above her face."
|
||||
f"{woman} kneels very low between the POV viewer's thighs, face below the shaft at testicle height, "
|
||||
"mouth and tongue on the POV viewer's balls while his penis points upward above her forehead."
|
||||
)
|
||||
return (
|
||||
f"{man} sits with legs apart while {woman} kneels low between his thighs, sucking and licking his balls "
|
||||
f"with {man}'s penis visible above her face."
|
||||
f"{man} sits with legs apart while {woman} kneels very low between his thighs, face below the shaft at testicle height, "
|
||||
f"mouth and tongue on his balls while {man}'s penis points upward above her forehead."
|
||||
)
|
||||
if "penis-licking" in position_text or "penis licking" in text or "tongue along" in text or "tongue licking" in text:
|
||||
if man_is_pov:
|
||||
return (
|
||||
f"{woman} kneels at the POV viewer's hips with her tongue along the POV viewer's penis, "
|
||||
"face close to the shaft and glans while her hands steady the base."
|
||||
f"{woman} kneels close at the POV viewer's pelvis, face just above his hips, "
|
||||
"tongue running along the underside of the POV viewer's penis from shaft to glans while one hand steadies the base."
|
||||
)
|
||||
return (
|
||||
f"{woman} kneels at {man}'s hips with her tongue along {man}'s penis, face close to the shaft and glans "
|
||||
"while her hands steady the base."
|
||||
f"{woman} kneels close at {man}'s pelvis, face just above his hips, "
|
||||
f"tongue running along the underside of {man}'s penis from shaft to glans while one hand steadies the base."
|
||||
)
|
||||
if "handjob" in position_text or "handjob" in text or "hand job" in text or "hand wrapped" in text:
|
||||
if man_is_pov:
|
||||
return (
|
||||
f"{woman} kneels close at the POV viewer's pelvis with her face behind the shaft, "
|
||||
"one hand wrapped around the POV viewer's penis and the other hand steadying the base as she strokes toward the glans."
|
||||
)
|
||||
return (
|
||||
f"{woman} kneels close at {man}'s pelvis with her face behind the shaft, "
|
||||
f"one hand wrapped around {man}'s penis and the other hand steadying the base as she strokes toward the glans."
|
||||
)
|
||||
if "footjob" in text or "soles" in text or "toes curled" in text or "feet stroking" in text:
|
||||
if man_is_pov:
|
||||
return (
|
||||
f"{woman} faces the POV viewer while the POV viewer reclines, wrapping both soles around the POV viewer's penis "
|
||||
"and stroking the shaft with her feet from a clear first-person view."
|
||||
f"{woman} faces the POV viewer with legs raised toward the camera, both soles wrapped around the POV viewer's penis "
|
||||
"in the lower foreground and toes curled around the shaft."
|
||||
)
|
||||
return (
|
||||
f"{man} reclines with hips forward while {woman} faces him and wraps both soles around {man}'s penis, "
|
||||
@@ -6622,6 +6645,10 @@ MAN_LOWER_ACCESS_TERMS = (
|
||||
"titjob",
|
||||
"breast sex",
|
||||
"footjob",
|
||||
"handjob",
|
||||
"hand job",
|
||||
"hand wrapped",
|
||||
"hand stroking",
|
||||
"blowjob",
|
||||
"fellatio",
|
||||
"penis sucking",
|
||||
|
||||
Reference in New Issue
Block a user