update content

This commit is contained in:
SandPoot
2023-06-20 15:39:24 -03:00
parent 9ab5c245bb
commit 15d52e5b15
18 changed files with 416 additions and 250 deletions
@@ -40,6 +40,9 @@
var/user_is_target = FALSE //Boolean. Pretty self explanatory.
/// Refuses to accept more than one entry for some reason, fix sometime
var/list/additional_details
/// Checks if user can do an interaction, action_check is for whether you're actually doing it or not (useful for the menu and not removing the buttons)
/datum/interaction/proc/evaluate_user(mob/living/user, silent = TRUE, action_check = TRUE)
if(SSinteractions.is_blacklisted(user))
@@ -8,34 +8,73 @@
write_log_user = "groped own breasts"
write_log_target = null
additional_details = list(
list(
"info" = "You can fill a container if you hold it in your hand or pull it",
"icon" = "flask",
"color" = "transparent"
)
)
/datum/interaction/lewd/titgrope_self/display_interaction(mob/living/user)
var/message
var/t_His = user.p_their()
if(user.a_intent == INTENT_HARM)
message = "[pick("aggressively gropes [t_His] breast.",
"grabs [t_His] breasts.",
"tightly squeezes [t_His] breasts.",
"slaps at [t_His] breasts.",
"gropes [t_His] breasts roughly.")]"
var/obj/item/reagent_containers/liquid_container
var/obj/item/cached_item = user.get_active_held_item()
if(istype(cached_item, /obj/item/reagent_containers))
liquid_container = cached_item
else
message = "[pick("gently gropes [t_His] breast.",
"softly squeezes [t_His] breasts.",
"grips [t_His] breasts.",
"runs a few fingers over [t_His] breast.",
"delicately teases [t_His] nipple.",
"traces a touch across [t_His] breast.")]"
cached_item = user.pulling
if(istype(cached_item, /obj/item/reagent_containers))
liquid_container = cached_item
if(user.a_intent == INTENT_HARM)
message = pick("aggressively gropes [t_His] breast",
"grabs [t_His] breasts",
"tightly squeezes [t_His] breasts",
"slaps at [t_His] breasts",
"gropes [t_His] breasts roughly")
else
message = pick("gently gropes [t_His] breast",
"softly squeezes [t_His] breasts",
"grips [t_His] breasts",
"runs a few fingers over [t_His] breast",
"delicately teases [t_His] nipple",
"traces a touch across [t_His] breast")
if(prob(5 + user.get_lust()))
user.visible_message("<span class='lewd'><b>\The [user]</b> [pick("shivers in arousal.",
user.visible_message(span_lewd("<b>\The [user]</b> [pick(
"shivers in arousal.",
"moans quietly.",
"breathes out a soft moan.",
"gasps.",
"shudders softly.",
"trembles as [t_His] hands run across bare skin.")]</span>")
user.visible_message(message = span_lewd("<b>\The [user]</b> [message]"), ignored_mobs = user.get_unconsenting())
playlewdinteractionsound(get_turf(user), 'modular_sand/sound/interactions/squelch1.ogg', 50, 1, -1)
user.handle_post_sex(NORMAL_LUST, CUM_TARGET_HAND, user)
"trembles as [t_His] hands run across bare skin.")]"))
if(liquid_container)
message += " over \the [liquid_container]"
var/obj/item/organ/genital/breasts/milkers = user.getorganslot(ORGAN_SLOT_BREASTS)
var/milktype = milkers?.fluid_id
if(milkers && milktype)
var/modifier
switch(milkers.size)
if("c", "d", "e")
modifier = 2
if("f", "g", "h")
modifier = 3
else
if(milkers.size in milkers.breast_values)
modifier = clamp(milkers.breast_values[milkers.size] - 5, 0, INFINITY)
else
modifier = 1
liquid_container.reagents.add_reagent(milktype, rand(1,3 * modifier))
user.visible_message(message = span_lewd("<b>\The [user]</b> [message]."), ignored_mobs = user.get_unconsenting())
playlewdinteractionsound(get_turf(user), 'modular_sand/sound/interactions/squelch1.ogg', 50, 1, -1)
/datum/interaction/lewd/self_nipsuck
description = "Suck your own nips."
@@ -12,9 +12,10 @@
var/t_His = user.p_their()
var/t_Him = user.p_them()
user.visible_message("<span class='lewd'><b>\The [user]</b> [pick("fingers [t_Him]self.",
user.visible_message(span_lewd("<b>\The [user]</b> [pick(
"fingers [t_Him]self.",
"fingers [t_His] asshole.",
"fingers [t_Him]self hard.")]</span>", ignored_mobs = user.get_unconsenting())
"fingers [t_Him]self hard.")]"), ignored_mobs = user.get_unconsenting())
playlewdinteractionsound(get_turf(user), 'modular_sand/sound/interactions/champ_fingering.ogg', 50, 1, -1)
user.handle_post_sex(NORMAL_LUST, CUM_TARGET_HAND, user)
@@ -28,12 +29,38 @@
write_log_user = "fingered own pussy"
write_log_target = null
additional_details = list(
list(
"info" = "You can fill a container if you hold it in your hand or pull it",
"icon" = "flask",
"color" = "transparent"
)
)
/datum/interaction/lewd/finger_self/display_interaction(mob/living/user)
var/t_His = user.p_their()
user.visible_message("<span class='lewd'><b>\The [user]</b> [pick("fingers [t_His] pussy deep.",
"fingers [t_His] pussy.",
"plays with [t_His] pussy.",
"fingers [t_His] own pussy hard.")]</span>", ignored_mobs = user.get_unconsenting())
var/obj/item/reagent_containers/liquid_container
var/obj/item/cached_item = user.get_active_held_item()
if(istype(cached_item, /obj/item/reagent_containers))
liquid_container = cached_item
else
cached_item = user.pulling
if(istype(cached_item, /obj/item/reagent_containers))
liquid_container = cached_item
var/message = pick(
"fingers [t_His] pussy deep",
"fingers [t_His] pussy",
"plays with [t_His] pussy",
"fingers [t_His] own pussy hard")
if(!user.is_fucking(user, CUM_TARGET_HAND, user.getorganslot(ORGAN_SLOT_VAGINA)))
user.set_is_fucking(user, CUM_TARGET_HAND, user.getorganslot(ORGAN_SLOT_VAGINA))
if(liquid_container)
message += " over \the [liquid_container]"
user.visible_message(span_lewd("<b>\The [user]</b> [message]."), ignored_mobs = user.get_unconsenting())
playlewdinteractionsound(get_turf(user), 'modular_sand/sound/interactions/champ_fingering.ogg', 50, 1, -1)
user.handle_post_sex(NORMAL_LUST, CUM_TARGET_HAND, user)
user.handle_post_sex(NORMAL_LUST, CUM_TARGET_HAND, liquid_container ? liquid_container : user)
@@ -8,24 +8,44 @@
write_log_user = "jerked off"
write_log_target = null
additional_details = list(
list(
"info" = "You can fill a container if you hold it in your hand or pull it",
"icon" = "flask",
"color" = "transparent"
)
)
/datum/interaction/lewd/jack/display_interaction(mob/living/user)
var/message
var/t_His = user.p_their()
var/t_Him = user.p_them()
if(user.is_fucking(user, CUM_TARGET_HAND))
message = "[pick("jerks [t_Him]self off.",
"works [t_His] shaft.",
"strokes [t_His] penis.",
"wanks [t_His] cock hard.")]"
var/obj/item/reagent_containers/liquid_container
var/obj/item/cached_item = user.get_active_held_item()
if(istype(cached_item, /obj/item/reagent_containers))
liquid_container = cached_item
else
message = "[pick("wraps [t_His] hand around [t_His] cock.",
"starts to stroke [t_His] cock.",
"starts playing with [t_His] cock.")]"
cached_item = user.pulling
if(istype(cached_item, /obj/item/reagent_containers))
liquid_container = cached_item
if(user.is_fucking(user, CUM_TARGET_HAND, user.getorganslot(ORGAN_SLOT_PENIS)))
message = "[pick("jerks [t_Him]self off",
"works [t_His] shaft",
"strokes [t_His] penis",
"wanks [t_His] cock hard")]"
else
message = "[pick("wraps [t_His] hand around [t_His] cock",
"starts to stroke [t_His] cock",
"starts playing with [t_His] cock")]"
user.set_is_fucking(user, CUM_TARGET_HAND, user.getorganslot(ORGAN_SLOT_PENIS))
if(liquid_container)
message += " over \the [liquid_container]"
playlewdinteractionsound(get_turf(user), pick('modular_sand/sound/interactions/bang1.ogg',
'modular_sand/sound/interactions/bang2.ogg',
'modular_sand/sound/interactions/bang3.ogg'), 70, 1, -1)
user.visible_message(message = span_lewd("<b>\The [user]</b> [message]"), ignored_mobs = user.get_unconsenting())
user.handle_post_sex(NORMAL_LUST, CUM_TARGET_HAND, user)
user.visible_message(message = span_lewd("<b>\The [user]</b> [message]."), ignored_mobs = user.get_unconsenting())
user.handle_post_sex(NORMAL_LUST, CUM_TARGET_HAND, liquid_container ? liquid_container : user)
@@ -41,8 +41,10 @@
var/cleartimer //Timer for clearing the "last_lewd_datum". This prevents some oddities.
/mob/living/proc/clear_lewd_datum()
last_lewd_datum = null
last_partner = null
last_orifice = null
last_genital = null
last_lewd_datum = null
/mob/living/Initialize(mapload)
. = ..()
@@ -378,6 +380,8 @@
lastmoan = moan
/mob/living/proc/cum(mob/living/partner, target_orifice)
if(HAS_TRAIT(src, TRAIT_NEVERBONER))
return FALSE
var/message
var/u_His = p_their()
var/u_He = p_they()
@@ -393,174 +397,11 @@
partner_carbon_check = TRUE
if(src != partner)
if(!last_genital)
if(has_penis())
if(!istype(partner))
target_orifice = null
switch(target_orifice)
if(CUM_TARGET_MOUTH)
if(partner.has_mouth() && partner.mouth_is_free())
message = "cums right in \the <b>[partner]</b>'s mouth."
cumin = TRUE
else
message = "cums on \the <b>[partner]</b>'s face."
if(CUM_TARGET_THROAT)
if(partner.has_mouth() && partner.mouth_is_free())
message = "shoves deep into \the <b>[partner]</b>'s throat and cums."
cumin = TRUE
else
message = "cums on \the <b>[partner]</b>'s face."
if(CUM_TARGET_VAGINA)
if(partner.has_vagina(REQUIRE_EXPOSED))
if(partner_carbon_check)
target_gen = c_partner.getorganslot(ORGAN_SLOT_VAGINA)
message = "cums in \the <b>[partner]</b>'s pussy."
cumin = TRUE
else
message = "cums on \the <b>[partner]</b>'s belly."
if(CUM_TARGET_ANUS)
if(partner.has_anus(REQUIRE_EXPOSED))
message = "cums in \the <b>[partner]</b>'s asshole."
cumin = TRUE
else
message = "cums on \the <b>[partner]</b>'s backside."
if(CUM_TARGET_HAND)
if(partner.has_hand(REQUIRE_ANY))
message = "cums in \the <b>[partner]</b>'s hand."
else
message = "cums on \the <b>[partner]</b>."
if(CUM_TARGET_BREASTS)
if(partner.has_breasts(REQUIRE_EXPOSED))
message = "cums onto \the <b>[partner]</b>'s breasts."
else
message = "cums on \the <b>[partner]</b>'s chest and neck."
if(NUTS_TO_FACE)
if(partner.has_mouth() && partner.mouth_is_free())
message = "vigorously ruts [u_His] nutsack into \the <b>[partner]</b>'s mouth before shooting [u_His] thick, sticky jizz all over [t_His] eyes and hair."
if(THIGH_SMOTHERING)
if(has_penis(REQUIRE_EXPOSED)) //it already checks for the cock before, why the hell would you do this redundant shit
message = "keeps \the <b>[partner]</b> locked in [u_His] thighs as [u_His] cock throbs, dumping its heavy load all over [t_His] face."
else
message = "reaches [u_His] peak, locking [u_His] legs around \the <b>[partner]</b>'s head extra hard as [u_He] cum[u_S] straight onto the head stuck between [u_His] thighs"
cumin = TRUE
if(CUM_TARGET_FEET)
if(!last_lewd_datum.require_target_num_feet)
if(partner.has_feet())
message = "cums on \the <b>[partner]</b>'s [partner.has_feet() == 1 ? pick("foot", "sole") : pick("feet", "soles")]."
else
message = "cums on the floor!"
else
if(partner.has_feet())
message = "cums on \the <b>[partner]</b>'s [last_lewd_datum.require_target_feet == 1 ? pick("foot", "sole") : pick("feet", "soles")]."
else
message = "cums on the floor!"
//weird shit goes here
if(CUM_TARGET_EARS)
if(partner.has_ears())
message = "cums inside \the <b>[partner]</b>'s ear."
else
message = "cums inside \the <b>[partner]</b>'s earsocket."
cumin = TRUE
if(CUM_TARGET_EYES)
if(partner.has_eyes())
message = "cums on \the <b>[partner]</b>'s eyeball."
else
message = "cums inside \the <b>[partner]</b>'s eyesocket."
cumin = TRUE
//
if(CUM_TARGET_PENIS)
if(partner.has_penis(REQUIRE_EXPOSED))
message = "cums on \the <b>[partner]</b>."
else
message = "cums on the floor!"
else
message = "cums on the floor!"
else if(has_vagina())
if(!istype(partner))
target_orifice = null
switch(target_orifice)
if(CUM_TARGET_MOUTH)
if(partner.has_mouth() && partner.mouth_is_free())
message = "squirts right in \the <b>[partner]</b>'s mouth."
cumin = TRUE
else
message = "squirts on \the <b>[partner]</b>'s face."
if(CUM_TARGET_THROAT)
if(partner.has_mouth() && partner.mouth_is_free())
message = "rubs [u_His] vagina against \the <b>[partner]</b>'s mouth and cums."
cumin = TRUE
else
message = "squirts on \the <b>[partner]</b>'s face."
if(CUM_TARGET_VAGINA)
if(partner.has_vagina(REQUIRE_EXPOSED))
message = "squirts on \the <b>[partner]</b>'s pussy."
cumin = TRUE
else
message = "squirts on \the <b>[partner]</b>'s belly."
if(CUM_TARGET_ANUS)
if(partner.has_anus(REQUIRE_EXPOSED))
message = "squirts on \the <b>[partner]</b>'s asshole."
cumin = TRUE
else
message = "squirts on \the <b>[partner]</b>'s backside."
if(CUM_TARGET_HAND)
if(partner.has_hand(REQUIRE_ANY))
message = "squirts on \the <b>[partner]</b>'s hand."
else
message = "squirts on \the <b>[partner]</b>."
if(CUM_TARGET_BREASTS)
if(partner.has_breasts(REQUIRE_EXPOSED))
message = "squirts onto \the <b>[partner]</b>'s breasts."
else
message = "squirts on \the <b>[partner]</b>'s chest and neck."
if(NUTS_TO_FACE)
if(partner.has_mouth() && partner.mouth_is_free())
message = "vigorously ruts [u_His] clit into \the <b>[partner]</b>'s mouth before shooting [u_His] femcum all over [t_His] eyes and hair."
if(THIGH_SMOTHERING)
message = "keeps \the <b>[partner]</b> locked in [u_His] thighs as [u_He] orgasm[u_S], squirting over [t_His] face."
cumin = TRUE
if(CUM_TARGET_FEET)
if(!last_lewd_datum.require_target_num_feet)
if(partner.has_feet())
message = "squirts on \the <b>[partner]</b>'s [partner.has_feet() == 1 ? pick("foot", "sole") : pick("feet", "soles")]."
else
message = "squirts on the floor!"
else
if(partner.has_feet())
message = "squirts on \the <b>[partner]</b>'s [last_lewd_datum.require_target_feet == 1 ? pick("foot", "sole") : pick("feet", "soles")]."
else
message = "squirts on the floor!"
//weird shit goes here
if(CUM_TARGET_EARS)
if(partner.has_ears())
message = "squirts on \the <b>[partner]</b>'s ear."
else
message = "squirts on \the <b>[partner]</b>'s earsocket."
cumin = TRUE
if(CUM_TARGET_EYES)
if(partner.has_eyes())
message = "squirts on \the <b>[partner]</b>'s eyeball."
else
message = "squirts on \the <b>[partner]</b>'s eyesocket."
cumin = TRUE
//
if(CUM_TARGET_PENIS)
if(partner.has_penis(REQUIRE_EXPOSED))
message = "squirts on \the <b>[partner]</b>'s penis"
else
message = "squirts on the floor!"
else
message = "squirts on the floor!"
else
message = pick("orgasms violently!", "twists in orgasm.")
else
switch(last_genital.type)
if(/obj/item/organ/genital/penis)
if(ismob(partner))
if(!last_genital)
if(has_penis())
if(!istype(partner))
target_orifice = null
switch(target_orifice)
if(CUM_TARGET_MOUTH)
if(partner.has_mouth() && partner.mouth_is_free())
@@ -589,12 +430,12 @@
else
message = "cums on \the <b>[partner]</b>'s backside."
if(CUM_TARGET_HAND)
if(partner.has_hand())
if(partner.has_hand(REQUIRE_ANY))
message = "cums in \the <b>[partner]</b>'s hand."
else
message = "cums on \the <b>[partner]</b>."
if(CUM_TARGET_BREASTS)
if(partner.is_topless() && partner.has_breasts())
if(partner.has_breasts(REQUIRE_EXPOSED))
message = "cums onto \the <b>[partner]</b>'s breasts."
else
message = "cums on \the <b>[partner]</b>'s chest and neck."
@@ -602,13 +443,13 @@
if(partner.has_mouth() && partner.mouth_is_free())
message = "vigorously ruts [u_His] nutsack into \the <b>[partner]</b>'s mouth before shooting [u_His] thick, sticky jizz all over [t_His] eyes and hair."
if(THIGH_SMOTHERING)
if(has_penis()) //it already checks for the cock before, why the hell would you do this redundant shit
if(has_penis(REQUIRE_EXPOSED)) //it already checks for the cock before, why the hell would you do this redundant shit
message = "keeps \the <b>[partner]</b> locked in [u_His] thighs as [u_His] cock throbs, dumping its heavy load all over [t_His] face."
else
message = "reaches [u_His] peak, locking [u_His] legs around \the <b>[partner]</b>'s head extra hard as [u_He] cum[u_S] straight onto the head stuck between [u_His] thighs"
cumin = TRUE
if(CUM_TARGET_FEET)
if(!last_lewd_datum || !last_lewd_datum.require_target_num_feet)
if(!last_lewd_datum.require_target_num_feet)
if(partner.has_feet())
message = "cums on \the <b>[partner]</b>'s [partner.has_feet() == 1 ? pick("foot", "sole") : pick("feet", "soles")]."
else
@@ -639,7 +480,7 @@
message = "cums on the floor!"
else
message = "cums on the floor!"
if(/obj/item/organ/genital/vagina)
else if(has_vagina())
if(!istype(partner))
target_orifice = null
@@ -669,7 +510,7 @@
else
message = "squirts on \the <b>[partner]</b>'s backside."
if(CUM_TARGET_HAND)
if(partner.has_hand())
if(partner.has_hand(REQUIRE_ANY))
message = "squirts on \the <b>[partner]</b>'s hand."
else
message = "squirts on \the <b>[partner]</b>."
@@ -681,12 +522,11 @@
if(NUTS_TO_FACE)
if(partner.has_mouth() && partner.mouth_is_free())
message = "vigorously ruts [u_His] clit into \the <b>[partner]</b>'s mouth before shooting [u_His] femcum all over [t_His] eyes and hair."
if(THIGH_SMOTHERING)
message = "keeps \the <b>[partner]</b> locked in [u_His] thighs as [u_He] orgasm[u_S], squirting over [t_His] face."
cumin = TRUE
if(CUM_TARGET_FEET)
if(!last_lewd_datum || !last_lewd_datum.require_target_num_feet)
if(!last_lewd_datum.require_target_num_feet)
if(partner.has_feet())
message = "squirts on \the <b>[partner]</b>'s [partner.has_feet() == 1 ? pick("foot", "sole") : pick("feet", "soles")]."
else
@@ -717,8 +557,179 @@
message = "squirts on the floor!"
else
message = "squirts on the floor!"
else
message = pick("orgasms violently!", "twists in orgasm.")
else
switch(last_genital.type)
if(/obj/item/organ/genital/penis)
if(!istype(partner))
target_orifice = null
switch(target_orifice)
if(CUM_TARGET_MOUTH)
if(partner.has_mouth() && partner.mouth_is_free())
message = "cums right in \the <b>[partner]</b>'s mouth."
cumin = TRUE
else
message = "cums on \the <b>[partner]</b>'s face."
if(CUM_TARGET_THROAT)
if(partner.has_mouth() && partner.mouth_is_free())
message = "shoves deep into \the <b>[partner]</b>'s throat and cums."
cumin = TRUE
else
message = "cums on \the <b>[partner]</b>'s face."
if(CUM_TARGET_VAGINA)
if(partner.has_vagina(REQUIRE_EXPOSED))
if(partner_carbon_check)
target_gen = c_partner.getorganslot(ORGAN_SLOT_VAGINA)
message = "cums in \the <b>[partner]</b>'s pussy."
cumin = TRUE
else
message = "cums on \the <b>[partner]</b>'s belly."
if(CUM_TARGET_ANUS)
if(partner.has_anus(REQUIRE_EXPOSED))
message = "cums in \the <b>[partner]</b>'s asshole."
cumin = TRUE
else
message = "cums on \the <b>[partner]</b>'s backside."
if(CUM_TARGET_HAND)
if(partner.has_hand())
message = "cums in \the <b>[partner]</b>'s hand."
else
message = "cums on \the <b>[partner]</b>."
if(CUM_TARGET_BREASTS)
if(partner.is_topless() && partner.has_breasts())
message = "cums onto \the <b>[partner]</b>'s breasts."
else
message = "cums on \the <b>[partner]</b>'s chest and neck."
if(NUTS_TO_FACE)
if(partner.has_mouth() && partner.mouth_is_free())
message = "vigorously ruts [u_His] nutsack into \the <b>[partner]</b>'s mouth before shooting [u_His] thick, sticky jizz all over [t_His] eyes and hair."
if(THIGH_SMOTHERING)
if(has_penis()) //it already checks for the cock before, why the hell would you do this redundant shit
message = "keeps \the <b>[partner]</b> locked in [u_His] thighs as [u_His] cock throbs, dumping its heavy load all over [t_His] face."
else
message = "reaches [u_His] peak, locking [u_His] legs around \the <b>[partner]</b>'s head extra hard as [u_He] cum[u_S] straight onto the head stuck between [u_His] thighs"
cumin = TRUE
if(CUM_TARGET_FEET)
if(!last_lewd_datum || !last_lewd_datum.require_target_num_feet)
if(partner.has_feet())
message = "cums on \the <b>[partner]</b>'s [partner.has_feet() == 1 ? pick("foot", "sole") : pick("feet", "soles")]."
else
message = "cums on the floor!"
else
if(partner.has_feet())
message = "cums on \the <b>[partner]</b>'s [last_lewd_datum.require_target_feet == 1 ? pick("foot", "sole") : pick("feet", "soles")]."
else
message = "cums on the floor!"
//weird shit goes here
if(CUM_TARGET_EARS)
if(partner.has_ears())
message = "cums inside \the <b>[partner]</b>'s ear."
else
message = "cums inside \the <b>[partner]</b>'s earsocket."
cumin = TRUE
if(CUM_TARGET_EYES)
if(partner.has_eyes())
message = "cums on \the <b>[partner]</b>'s eyeball."
else
message = "cums inside \the <b>[partner]</b>'s eyesocket."
cumin = TRUE
//
if(CUM_TARGET_PENIS)
if(partner.has_penis(REQUIRE_EXPOSED))
message = "cums on \the <b>[partner]</b>."
else
message = "cums on the floor!"
else
message = "cums on the floor!"
if(/obj/item/organ/genital/vagina)
if(!istype(partner))
target_orifice = null
switch(target_orifice)
if(CUM_TARGET_MOUTH)
if(partner.has_mouth() && partner.mouth_is_free())
message = "squirts right in \the <b>[partner]</b>'s mouth."
cumin = TRUE
else
message = "squirts on \the <b>[partner]</b>'s face."
if(CUM_TARGET_THROAT)
if(partner.has_mouth() && partner.mouth_is_free())
message = "rubs [u_His] vagina against \the <b>[partner]</b>'s mouth and cums."
cumin = TRUE
else
message = "squirts on \the <b>[partner]</b>'s face."
if(CUM_TARGET_VAGINA)
if(partner.has_vagina(REQUIRE_EXPOSED))
message = "squirts on \the <b>[partner]</b>'s pussy."
cumin = TRUE
else
message = "squirts on \the <b>[partner]</b>'s belly."
if(CUM_TARGET_ANUS)
if(partner.has_anus(REQUIRE_EXPOSED))
message = "squirts on \the <b>[partner]</b>'s asshole."
cumin = TRUE
else
message = "squirts on \the <b>[partner]</b>'s backside."
if(CUM_TARGET_HAND)
if(partner.has_hand())
message = "squirts on \the <b>[partner]</b>'s hand."
else
message = "squirts on \the <b>[partner]</b>."
if(CUM_TARGET_BREASTS)
if(partner.has_breasts(REQUIRE_EXPOSED))
message = "squirts onto \the <b>[partner]</b>'s breasts."
else
message = "squirts on \the <b>[partner]</b>'s chest and neck."
if(NUTS_TO_FACE)
if(partner.has_mouth() && partner.mouth_is_free())
message = "vigorously ruts [u_His] clit into \the <b>[partner]</b>'s mouth before shooting [u_His] femcum all over [t_His] eyes and hair."
if(THIGH_SMOTHERING)
message = "keeps \the <b>[partner]</b> locked in [u_His] thighs as [u_He] orgasm[u_S], squirting over [t_His] face."
if(CUM_TARGET_FEET)
if(!last_lewd_datum || !last_lewd_datum.require_target_num_feet)
if(partner.has_feet())
message = "squirts on \the <b>[partner]</b>'s [partner.has_feet() == 1 ? pick("foot", "sole") : pick("feet", "soles")]."
else
message = "squirts on the floor!"
else
if(partner.has_feet())
message = "squirts on \the <b>[partner]</b>'s [last_lewd_datum.require_target_feet == 1 ? pick("foot", "sole") : pick("feet", "soles")]."
else
message = "squirts on the floor!"
//weird shit goes here
if(CUM_TARGET_EARS)
if(partner.has_ears())
message = "squirts on \the <b>[partner]</b>'s ear."
else
message = "squirts on \the <b>[partner]</b>'s earsocket."
cumin = TRUE
if(CUM_TARGET_EYES)
if(partner.has_eyes())
message = "squirts on \the <b>[partner]</b>'s eyeball."
else
message = "squirts on \the <b>[partner]</b>'s eyesocket."
cumin = TRUE
//
if(CUM_TARGET_PENIS)
if(partner.has_penis(REQUIRE_EXPOSED))
message = "squirts on \the <b>[partner]</b>'s penis"
else
message = "squirts on the floor!"
else
message = "squirts on the floor!"
else
message = pick("orgasms violently!", "twists in orgasm.")
else if(istype(partner, /obj/item/reagent_containers))
switch(last_genital.type)
if(/obj/item/organ/genital/penis)
message = "cums into \the <b>[partner]</b>"
if(/obj/item/organ/genital/vagina)
message = "squirts into \the <b>[partner]</b>"
else //todo: better self cum messages
message = "cums all over themselves!"
if(gender == MALE)
@@ -744,14 +755,31 @@
var/mob/living/carbon/human/H = src
if(!partner)
H.mob_climax(TRUE, "masturbation", "none")
else if(istype(partner, /obj/item/reagent_containers))
H.mob_fill_container(last_genital, partner, 0)
else
H.mob_climax(TRUE, "sex", partner, !cumin, target_gen)
set_lust(0)
/mob/living/proc/is_fucking(mob/living/partner, orifice)
if(partner == last_partner && orifice == last_orifice)
return TRUE
return FALSE
return TRUE
/mob/living/proc/is_fucking(mob/living/partner, orifice, obj/item/organ/genital/genepool, datum/interaction/lewd/lewd_datum)
var/failed = FALSE
if(partner)
if(partner != last_partner)
failed++
if(orifice)
if(orifice != last_orifice)
failed++
if(genepool)
if(genepool != last_genital)
failed++
if(lewd_datum)
if(lewd_datum != last_lewd_datum)
failed++
if(failed)
return FALSE
return TRUE
/mob/living/proc/set_is_fucking(mob/living/partner, orifice, obj/item/organ/genital/genepool)
last_partner = partner