mirror of
https://github.com/Sandstorm-Station/Sandstorm-Station-13.git
synced 2026-08-23 13:18:59 +01:00
update content
This commit is contained in:
@@ -112,6 +112,7 @@
|
||||
interaction["type"] = INTERACTION_LEWD
|
||||
else
|
||||
interaction["type"] = INTERACTION_NORMAL
|
||||
interaction["additionalDetails"] = I.additional_details
|
||||
sent_interactions += list(interaction)
|
||||
.["interactions"] = sent_interactions
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user