mirror of
https://github.com/Sandstorm-Station/Sandstorm-Station-13.git
synced 2026-08-18 10:47:16 +01:00
614 lines
24 KiB
Plaintext
614 lines
24 KiB
Plaintext
/datum/interaction/lewd
|
|
var/list/blacklisted_mobs = list(/mob/living/simple_animal/pet,
|
|
/mob/living/simple_animal/cockroach,
|
|
/mob/living/simple_animal/babyKiwi,
|
|
/mob/living/simple_animal/butterfly,
|
|
/mob/living/simple_animal/chick,
|
|
/mob/living/simple_animal/chicken,
|
|
/mob/living/simple_animal/cow,
|
|
/mob/living/simple_animal/crab,
|
|
/mob/living/simple_animal/kiwi,
|
|
/mob/living/simple_animal/parrot,
|
|
/mob/living/simple_animal/sloth,
|
|
/mob/living/simple_animal/pickle,
|
|
/mob/living/simple_animal/hostile/retaliate/goat)
|
|
|
|
/datum/interaction/lewd/kiss
|
|
command = "deepkiss"
|
|
description = "Kiss them deeply."
|
|
require_user_mouth = TRUE
|
|
require_target_mouth = TRUE
|
|
write_log_user = "kissed"
|
|
write_log_target = "was kissed by"
|
|
interaction_sound = null
|
|
max_distance = 1
|
|
|
|
/datum/interaction/lewd/kiss/post_interaction(mob/living/carbon/human/user, mob/living/carbon/human/target)
|
|
. = ..()
|
|
if(user.get_lust() < 5)
|
|
user.set_lust(5)
|
|
if(target.get_lust() < 5)
|
|
target.set_lust(5)
|
|
|
|
/datum/interaction/lewd/kiss/display_interaction(mob/living/carbon/human/user, mob/living/carbon/human/target)
|
|
if(user.get_lust() >= 3)
|
|
user.visible_message("<font color=purple>\The <b>[user]</b> gives an intense, lingering kiss to \the <b>[target]</b>.</font>")
|
|
else
|
|
user.visible_message("<font color=purple>\The <b>[user]</b> kisses \the <b>[target]</b> deeply.</font>")
|
|
|
|
/datum/interaction/lewd/titgrope
|
|
command = "titgrope"
|
|
description = "Grope their breasts."
|
|
require_target_breasts = REQUIRE_ANY
|
|
write_log_user = "groped"
|
|
write_log_target = "was groped by"
|
|
interaction_sound = null
|
|
max_distance = 1
|
|
|
|
/datum/interaction/lewd/titgrope/post_interaction(mob/living/carbon/human/user, mob/living/carbon/human/target)
|
|
. = ..()
|
|
|
|
/datum/interaction/lewd/titgrope/display_interaction(mob/living/carbon/human/user, mob/living/carbon/human/target)
|
|
if(user.a_intent == INTENT_HELP)
|
|
user.visible_message(
|
|
pick("<font color=purple>\The <b>[user]</b> gently gropes \the <b>[target]</b>'s breast.</font>",
|
|
"<font color=purple>\The <b>[user]</b> softly squeezes \the <b>[target]</b>'s breasts.</font>",
|
|
"<font color=purple>\The <b>[user]</b> grips \the <b>[target]</b>'s breasts.</font>",
|
|
"<font color=purple>\The <b>[user]</b> runs a few fingers over \the <b>[target]</b>'s breast.</font>",
|
|
"<font color=purple>\The <b>[user]</b> delicately teases \the <b>[target]</b>'s nipple.</font>",
|
|
"<font color=purple>\The <b>[user]</b> traces a touch across \the <b>[target]</b>'s breast.</font>"))
|
|
if(user.a_intent == INTENT_HARM)
|
|
user.visible_message(
|
|
pick("<font color=purple>\The <b>[user]</b> aggressively gropes \the <b>[target]</b>'s breast.</font>",
|
|
"<font color=purple>\The <b>[user]</b> grabs \the <b>[target]</b>'s breasts.</font>",
|
|
"<font color=purple>\The <b>[user]</b> tightly squeezes \the <b>[target]</b>'s breasts.</font>",
|
|
"<font color=purple>\The <b>[user]</b> slaps at \the <b>[target]</b>'s breasts.</font>",
|
|
"<font color=purple>\The <b>[user]</b> gropes \the <b>[target]</b>'s breasts roughly.</font>"))
|
|
if(prob(5 + target.get_lust()))
|
|
if(target.a_intent == INTENT_HELP)
|
|
user.visible_message(
|
|
pick("<font color=purple>\The <b>[target]</b> shivers in arousal.</font>",
|
|
"<font color=purple>\The <b>[target]</b> moans quietly.</font>",
|
|
"<font color=purple>\The <b>[target]</b> breathes out a soft moan.</font>",
|
|
"<font color=purple>\The <b>[target]</b> gasps.</font>",
|
|
"<font color=purple>\The <b>[target]</b> shudders softly.</font>",
|
|
"<font color=purple>\The <b>[target]</b> trembles as hands run across bare skin.</font>"))
|
|
if(target.get_lust() < 5)
|
|
target.set_lust(5)
|
|
if(target.a_intent == INTENT_DISARM)
|
|
if (target.restrained())
|
|
user.visible_message(
|
|
pick("<font color=purple>\The <b>[target]</b> twists playfully against the restraints.</font>",
|
|
"<font color=purple>\The <b>[target]</b> squirms away from <b>[user]</b>'s hand.</font>",
|
|
"<font color=purple>\The <b>[target]</b> slides back from <b>[user]</b>'s roaming hand.</font>",
|
|
"<font color=purple>\The <b>[target]</b> thrusts bare breasts forward into <b>[user]</b>'s hands.</font>"))
|
|
else
|
|
user.visible_message(
|
|
pick("<font color=purple>\The <b>[target]</b> playfully bats at <b>[user]</b>'s hand.</font>",
|
|
"<font color=purple>\The <b>[target]</b> squirms away from <b>[user]</b>'s hand.</font>",
|
|
"<font color=purple>\The <b>[target]</b> guides <b>[user]</b>'s hand across bare breasts.</font>",
|
|
"<font color=purple>\The <b>[target]</b> teasingly laces a few fingers over <b>[user]</b>'s knuckles.</font>"))
|
|
if(target.get_lust() < 10)
|
|
target.add_lust(1)
|
|
if(target.a_intent == INTENT_GRAB)
|
|
user.visible_message(
|
|
pick("<font color=purple>\The <b>[target]</b> grips <b>[user]</b>'s wrist tight.</font>",
|
|
"<font color=purple>\The <b>[target]</b> digs nails into <b>[user]</b>'s arm.</font>",
|
|
"<font color=purple>\The <b>[target]</b> grabs <b>[user]</b>'s wrist for a second.</font>"))
|
|
if(target.a_intent == INTENT_HARM)
|
|
user.adjustBruteLoss(1)
|
|
user.visible_message(
|
|
pick("<font color=purple>\The <b>[target]</b> pushes <b>[user]</b> roughly away.</font>",
|
|
"<font color=purple>\The <b>[target]</b> digs nails angrily into <b>[user]</b>'s arm.</font>",
|
|
"<font color=purple>\The <b>[target]</b> fiercely struggles against <b>[user]</b>.</font>",
|
|
"<font color=purple>\The <b>[target]</b> claws <b>[user]</b>'s forearm, drawing blood.</font>",
|
|
"<font color=purple>\The <b>[target]</b> slaps <b>[user]</b>'s hand away.</font>"))
|
|
return
|
|
|
|
/datum/interaction/lewd/nipsuck
|
|
command = "nipsuck"
|
|
description = "Suck their nipples."
|
|
require_target_topless = TRUE
|
|
require_user_mouth = TRUE
|
|
write_log_user = "sucked nipples"
|
|
write_log_target = "had their nipples sucked by"
|
|
interaction_sound = null
|
|
max_distance = 1
|
|
|
|
/datum/interaction/lewd/nipsuck/display_interaction(mob/living/carbon/human/user, mob/living/carbon/human/target)
|
|
if((user.a_intent == INTENT_HELP) || (user.a_intent == INTENT_DISARM))
|
|
user.visible_message(
|
|
pick("<font color=purple>\The <b>[user]</b> gently sucks on \the <b>[target]</b>'s [pick("nipple", "nipples")].</font>",
|
|
"<font color=purple>\The <b>[user]</b> gently nibs \the <b>[target]</b>'s [pick("nipple", "nipples")].</font>",
|
|
"<font color=purple>\The <b>[user]</b> licks \the <b>[target]</b>'s [pick("nipple", "nipples")].</font>"))
|
|
if(target.has_breasts(REQUIRE_EXPOSED))
|
|
var/modifier = 1
|
|
var/obj/item/organ/genital/breasts/B = target.getorganslot(ORGAN_SLOT_BREASTS)
|
|
switch(B.size)
|
|
if("c" || "d" || "e")
|
|
modifier = 2
|
|
if("f" || "g" || "h")
|
|
modifier = 3
|
|
if("i")
|
|
modifier = 4
|
|
if("j")
|
|
modifier = 5
|
|
else
|
|
modifier = 1
|
|
target.reagents.add_reagent(/datum/reagent/consumable/milk, rand(1,2 * modifier))
|
|
|
|
if(user.a_intent == INTENT_HARM)
|
|
user.visible_message(
|
|
pick("<font color=purple>\The <b>[user]</b> bites \the <b>[target]</b>'s [pick("nipple", "nipples")].</font>",
|
|
"<font color=purple>\The <b>[user]</b> aggressively sucks \the <b>[target]</b>'s [pick("nipple", "nipples")].</font>"))
|
|
if(target.has_breasts(REQUIRE_EXPOSED))
|
|
var/modifier = 1
|
|
var/obj/item/organ/genital/breasts/B = target.getorganslot(ORGAN_SLOT_BREASTS)
|
|
switch(B.size)
|
|
if("c" || "d" || "e")
|
|
modifier = 2
|
|
if("f" || "g" || "h")
|
|
modifier = 3
|
|
if("i")
|
|
modifier = 4
|
|
if("j")
|
|
modifier = 5
|
|
else
|
|
modifier = 1
|
|
target.reagents.add_reagent(/datum/reagent/consumable/milk, rand(1,3 * modifier)) //aggressive sucking leads to high rewards
|
|
|
|
if(user.a_intent == INTENT_GRAB)
|
|
user.visible_message(
|
|
pick("<font color=purple>\The <b>[user]</b> sucks \the <b>[target]</b>'s [pick("nipple", "nipples")] intently.</font>",
|
|
"<font color=purple>\The <b>[user]</b> feasts \the <b>[target]</b>'s [pick("nipple", "nipples")].</font>",
|
|
"<font color=purple>\The <b>[user]</b> glomps \the <b>[target]</b>'s [pick("nipple", "nipples")].</font>"))
|
|
if(target.has_breasts(REQUIRE_EXPOSED))
|
|
var/modifier = 1
|
|
var/obj/item/organ/genital/breasts/B = target.getorganslot(ORGAN_SLOT_BREASTS)
|
|
switch(B.size)
|
|
if("c" || "d" || "e")
|
|
modifier = 2
|
|
if("f" || "g" || "h")
|
|
modifier = 3
|
|
if("i")
|
|
modifier = 4
|
|
if("j")
|
|
modifier = 5
|
|
else
|
|
modifier = 1
|
|
target.reagents.add_reagent(/datum/reagent/consumable/milk, rand(1,3 * modifier)) //aggressive sucking leads to high rewards
|
|
|
|
if(prob(5 + target.get_lust()))
|
|
if(target.a_intent == INTENT_HELP)
|
|
if(!target.has_breasts())
|
|
user.visible_message(
|
|
pick("<font color=purple>\The <b>[target]</b> shivers in arousal.</font>",
|
|
"<font color=purple>\The <b>[target]</b> moans quietly.</font>",
|
|
"<font color=purple>\The <b>[target]</b> breathes out a soft moan.</font>",
|
|
"<font color=purple>\The <b>[target]</b> gasps.</font>",
|
|
"<font color=purple>\The <b>[target]</b> shudders softly.</font>",
|
|
"<font color=purple>\The <b>[target]</b> trembles as their chest gets molested.</font>"))
|
|
else
|
|
user.visible_message(
|
|
pick("<font color=purple>\The <b>[target]</b> shivers in arousal.</font>",
|
|
"<font color=purple>\The <b>[target]</b> moans quietly.</font>",
|
|
"<font color=purple>\The <b>[target]</b> breathes out a soft moan.</font>",
|
|
"<font color=purple>\The <b>[target]</b> gasps.</font>",
|
|
"<font color=purple>\The <b>[target]</b> shudders softly.</font>",
|
|
"<font color=purple>\The <b>[target]</b> trembles as their breasts get molested.</font>",
|
|
"<font color=purple>\The <b>[target]</b> quivers in arousal as \the <b>[user]</b> delights themselves on their milk.</font>"))
|
|
if(target.get_lust() < 5)
|
|
target.set_lust(5)
|
|
if(target.a_intent == INTENT_DISARM)
|
|
if (target.restrained())
|
|
if(!target.has_breasts())
|
|
user.visible_message(
|
|
pick("<font color=purple>\The <b>[target]</b> twists playfully against the restraints.</font>",
|
|
"<font color=purple>\The <b>[target]</b> squirms away from \the <b>[user]</b>'s mouth.</font>",
|
|
"<font color=purple>\The <b>[target]</b> slides back from \the <b>[user]</b>'s mouth.</font>",
|
|
"<font color=purple>\The <b>[target]</b> thrusts their bare chest forward into \the <b>[user]</b>'s mouth.</font>"))
|
|
else
|
|
user.visible_message(
|
|
pick("<font color=purple>\The <b>[target]</b> twists playfully against the restraints.</font>",
|
|
"<font color=purple>\The <b>[target]</b> squirms away from \the <b>[user]</b>'s mouth.</font>",
|
|
"<font color=purple>\The <b>[target]</b> slides back from \the <b>[user]</b>'s mouth.</font>",
|
|
"<font color=purple>\The <b>[target]</b> thrust their bare breasts forward into \the <b>[user]</b>'s mouth.</font>"))
|
|
else
|
|
if(!target.has_breasts())
|
|
user.visible_message(
|
|
pick("<font color=purple>\The <b>[target]</b> playfully shoos away \the <b>[user]</b>'s head.</font>",
|
|
"<font color=purple>\The <b>[target]</b> squirms away from \the <b>[user]</b>'s mouth.</font>",
|
|
"<font color=purple>\The <b>[target]</b> holds \the <b>[user]</b>'s head against their chest.</font>",
|
|
"<font color=purple>\The <b>[target]</b> teasingly caresses \the <b>[user]</b>'s neck.</font>"))
|
|
else
|
|
user.visible_message(
|
|
pick("<font color=purple>\The <b>[target]</b> playfully shoos away \the <b>[user]</b>'s head.</font>",
|
|
"<font color=purple>\The <b>[target]</b> squirms away from \the <b>[user]</b>'s mouth.</font>",
|
|
"<font color=purple>\The <b>[target]</b> holds \the <b>[user]</b>'s head against their breast.</font>",
|
|
"<font color=purple>\The <b>[target]</b> teasingly caresses \the <b>[user]</b>'s neck.</font>",
|
|
"<font color=purple>\The <b>[target]</b> rubs their breasts against \the <b>[user]</b>'s head.</font>"))
|
|
if(target.get_lust() < 10)
|
|
target.add_lust(1)
|
|
if(target.a_intent == INTENT_GRAB)
|
|
user.visible_message(
|
|
pick("<font color=purple>\The <b>[target]</b> grips \the <b>[user]</b>'s head tight.</font>",
|
|
"<font color=purple>\The <b>[target]</b> digs nails into \the <b>[user]</b>'s scalp.</font>",
|
|
"<font color=purple>\The <b>[target]</b> grabs and shoves \the <b>[user]</b>'s head away.</font>"))
|
|
if(target.a_intent == INTENT_HARM)
|
|
user.adjustBruteLoss(1)
|
|
user.visible_message(
|
|
pick("<font color=purple>\The <b>[target]</b> slaps \the <b>[user]</b> away.</font>",
|
|
"<font color=purple>\The <b>[target]</b> scratches <b>[user]</b>'s face.</font>",
|
|
"<font color=purple>\The <b>[target]</b> fiercely struggles against <b>[user]</b>.</font>",
|
|
"<font color=purple>\The <b>[target]</b> claws <b>[user]</b>'s face, drawing blood.</font>",
|
|
"<font color=purple>\The <b>[target]</b> elbows <b>[user]</b>'s mouth away.</font>"))
|
|
target.dir = get_dir(target, user)
|
|
user.dir = get_dir(user, target)
|
|
playlewdinteractionsound(user.loc, pick('sandcode/sound/interactions/oral1.ogg',
|
|
'sandcode/sound/interactions/oral2.ogg'), 70, 1, -1)
|
|
return
|
|
|
|
/datum/interaction/lewd/oral
|
|
command = "suckvag"
|
|
description = "Go down on them."
|
|
require_user_mouth = TRUE
|
|
require_target_vagina = REQUIRE_EXPOSED
|
|
write_log_user = "gave head to"
|
|
write_log_target = "was given head by"
|
|
interaction_sound = null
|
|
user_not_tired = TRUE
|
|
max_distance = 1
|
|
|
|
/datum/interaction/lewd/oral/display_interaction(mob/living/carbon/human/user, mob/living/carbon/human/target)
|
|
user.do_oral(target, "vagina")
|
|
|
|
/datum/interaction/lewd/oral/blowjob
|
|
command = "suckcock"
|
|
description = "Suck them off."
|
|
require_target_vagina = REQUIRE_NONE
|
|
require_target_penis = REQUIRE_EXPOSED
|
|
target_not_tired = TRUE
|
|
|
|
/datum/interaction/lewd/oral/blowjob/display_interaction(mob/living/carbon/human/user, mob/living/carbon/human/target)
|
|
user.do_oral(target, "penis")
|
|
|
|
/datum/interaction/lewd/fuck
|
|
command = "fuckvag"
|
|
description = "Fuck their pussy."
|
|
require_user_penis = REQUIRE_EXPOSED
|
|
require_target_vagina = REQUIRE_EXPOSED
|
|
write_log_user = "fucked"
|
|
write_log_target = "was fucked by"
|
|
interaction_sound = null
|
|
user_not_tired = TRUE
|
|
max_distance = 1
|
|
|
|
/datum/interaction/lewd/fuck/display_interaction(mob/living/carbon/human/user, mob/living/carbon/human/target)
|
|
user.do_vaginal(target)
|
|
|
|
/datum/interaction/lewd/fuck/anal
|
|
command = "fuckass"
|
|
description = "Fuck their ass."
|
|
require_target_vagina = REQUIRE_NONE
|
|
require_target_anus = REQUIRE_EXPOSED
|
|
user_not_tired = TRUE
|
|
|
|
/datum/interaction/lewd/fuck/anal/display_interaction(mob/living/carbon/human/user, mob/living/carbon/human/target)
|
|
user.do_anal(target)
|
|
|
|
/datum/interaction/lewd/finger
|
|
command = "finger"
|
|
description = "Finger their pussy."
|
|
require_user_hands = REQUIRE_ANY
|
|
require_target_vagina = REQUIRE_EXPOSED
|
|
interaction_sound = null
|
|
user_not_tired = TRUE
|
|
max_distance = 1
|
|
|
|
/datum/interaction/lewd/finger/display_interaction(mob/living/carbon/human/user, mob/living/carbon/human/target)
|
|
user.do_fingering(target)
|
|
|
|
/datum/interaction/lewd/fingerass
|
|
command = "fingerm"
|
|
description = "Finger their ass."
|
|
interaction_sound = null
|
|
require_user_hands = REQUIRE_ANY
|
|
require_target_anus = REQUIRE_EXPOSED
|
|
user_not_tired = TRUE
|
|
max_distance = 1
|
|
|
|
/datum/interaction/lewd/fingerass/display_interaction(mob/living/carbon/human/user, mob/living/carbon/human/target)
|
|
user.do_fingerass(target)
|
|
|
|
|
|
/datum/interaction/lewd/facefuck
|
|
command = "facefuck"
|
|
description = "Fuck their mouth."
|
|
interaction_sound = null
|
|
require_target_mouth = TRUE
|
|
user_not_tired = TRUE
|
|
require_user_penis = REQUIRE_EXPOSED
|
|
max_distance = 1
|
|
|
|
/datum/interaction/lewd/facefuck/display_interaction(mob/living/carbon/human/user, mob/living/carbon/human/target)
|
|
user.do_facefuck(target)
|
|
|
|
/datum/interaction/lewd/throatfuck
|
|
command = "throatfuck"
|
|
description = "Fuck their throat. | Does oxy damage."
|
|
interaction_sound = null
|
|
require_user_penis = REQUIRE_EXPOSED
|
|
require_target_mouth = TRUE
|
|
user_not_tired = TRUE
|
|
max_distance = 1
|
|
|
|
/datum/interaction/lewd/throatfuck/display_interaction(mob/living/carbon/human/user, mob/living/carbon/human/target)
|
|
user.do_throatfuck(target)
|
|
|
|
/datum/interaction/lewd/handjob
|
|
command = "handjob"
|
|
description = "Jerk them off."
|
|
interaction_sound = null
|
|
require_user_hands = TRUE
|
|
require_target_penis = REQUIRE_EXPOSED
|
|
target_not_tired = TRUE
|
|
max_distance = 1
|
|
|
|
/datum/interaction/lewd/handjob/display_interaction(mob/living/carbon/human/user, mob/living/carbon/human/target)
|
|
user.do_handjob(target)
|
|
|
|
/datum/interaction/lewd/breastfuck
|
|
command = "breastfuck"
|
|
description = "Fuck their breasts."
|
|
interaction_sound = null
|
|
require_user_penis = REQUIRE_EXPOSED
|
|
user_not_tired = TRUE
|
|
require_target_breasts = REQUIRE_EXPOSED
|
|
max_distance = 1
|
|
|
|
/datum/interaction/lewd/breastfuck/display_interaction(mob/living/carbon/human/user, mob/living/carbon/human/target)
|
|
user.do_breastfuck(target)
|
|
|
|
/datum/interaction/lewd/mount
|
|
command = "mount"
|
|
description = "Mount with your pussy."
|
|
interaction_sound = null
|
|
require_user_vagina = REQUIRE_EXPOSED
|
|
require_target_penis = REQUIRE_EXPOSED
|
|
user_not_tired = TRUE
|
|
target_not_tired = TRUE
|
|
max_distance = 1
|
|
|
|
/datum/interaction/lewd/mount/display_interaction(mob/living/carbon/human/user, mob/living/carbon/human/target)
|
|
user.do_mount(target)
|
|
|
|
/datum/interaction/lewd/mountass
|
|
command = "mountm"
|
|
description = "Mount with your ass."
|
|
interaction_sound = null
|
|
require_user_anus = REQUIRE_EXPOSED
|
|
require_target_penis = REQUIRE_EXPOSED
|
|
user_not_tired = TRUE
|
|
target_not_tired = TRUE
|
|
max_distance = 1
|
|
|
|
/datum/interaction/lewd/mountass/display_interaction(mob/living/carbon/human/user, mob/living/carbon/human/target)
|
|
user.do_mountass(target)
|
|
|
|
/datum/interaction/lewd/tribadism
|
|
command = "tribadism"
|
|
description = "Grind your pussy against theirs."
|
|
interaction_sound = null
|
|
require_target_vagina = REQUIRE_EXPOSED
|
|
require_user_vagina = REQUIRE_EXPOSED
|
|
user_not_tired = TRUE
|
|
max_distance = 1
|
|
|
|
/datum/interaction/lewd/tribadism/display_interaction(mob/living/carbon/human/user, mob/living/carbon/human/target)
|
|
user.do_tribadism(target)
|
|
|
|
/datum/interaction/lewd/rimjob
|
|
command = "rimjob"
|
|
description = "Lick their ass."
|
|
interaction_sound = null
|
|
require_user_mouth = TRUE
|
|
require_target_anus = REQUIRE_EXPOSED
|
|
user_not_tired = TRUE
|
|
max_distance = 1
|
|
|
|
/datum/interaction/lewd/rimjob/display_interaction(mob/living/carbon/human/user, mob/living/carbon/human/target)
|
|
user.do_rimjob(target)
|
|
|
|
/datum/interaction/lewd/mountface
|
|
command = "mountface"
|
|
description = "Ass to face."
|
|
interaction_sound = null
|
|
require_target_mouth = TRUE
|
|
require_user_anus = REQUIRE_EXPOSED
|
|
user_not_tired = TRUE
|
|
max_distance = 1
|
|
|
|
/datum/interaction/lewd/mountface/display_interaction(mob/living/carbon/human/user, mob/living/carbon/human/target)
|
|
user.do_mountface(target)
|
|
|
|
/datum/interaction/lewd/lickfeet
|
|
command = "lickfeet"
|
|
description = "Lick their feet."
|
|
interaction_sound = null
|
|
require_user_mouth = TRUE
|
|
require_target_feet = REQUIRE_ANY
|
|
require_target_num_feet = 1
|
|
max_distance = 1
|
|
|
|
/datum/interaction/lewd/lickfeet/display_interaction(mob/living/carbon/human/user, mob/living/carbon/human/target)
|
|
user.do_lickfeet(target)
|
|
|
|
/datum/interaction/lewd/grindface
|
|
command = "grindface"
|
|
description = "Feet grind their face."
|
|
interaction_sound = null
|
|
require_target_mouth = TRUE
|
|
require_user_num_feet = 1
|
|
require_user_feet = REQUIRE_ANY
|
|
max_distance = 1
|
|
|
|
/datum/interaction/lewd/grindface/display_interaction(mob/living/carbon/human/user, mob/living/carbon/human/target)
|
|
user.do_grindface(target)
|
|
|
|
/datum/interaction/lewd/grindmouth
|
|
command = "grindmouth"
|
|
description = "Feet grind their mouth."
|
|
interaction_sound = null
|
|
require_target_mouth = TRUE
|
|
require_user_num_feet = 1
|
|
require_user_feet = REQUIRE_ANY
|
|
max_distance = 1
|
|
|
|
/datum/interaction/lewd/grindmouth/display_interaction(mob/living/carbon/human/user, mob/living/carbon/human/target)
|
|
user.do_grindmouth(target)
|
|
|
|
/datum/interaction/lewd/footfuck
|
|
command = "footfuck"
|
|
description = "Rub your cock on their foot."
|
|
interaction_sound = null
|
|
require_target_num_feet = 1
|
|
require_target_feet = REQUIRE_ANY
|
|
require_user_penis = REQUIRE_EXPOSED
|
|
user_not_tired = TRUE
|
|
max_distance = 1
|
|
|
|
/datum/interaction/lewd/footfuck/display_interaction(mob/living/carbon/human/user, mob/living/carbon/human/target)
|
|
user.do_footfuck(target)
|
|
|
|
/datum/interaction/lewd/footfuck/double
|
|
command = "footfuckdouble"
|
|
description = "Rub your cock between their feet."
|
|
require_target_num_feet = 2
|
|
|
|
/datum/interaction/lewd/footfuck/double/display_interaction(mob/living/carbon/human/user, mob/living/carbon/human/target)
|
|
user.do_dfootfuck(target)
|
|
|
|
/datum/interaction/lewd/footjob
|
|
command = "footjob"
|
|
description = "Jerk them off with your foot."
|
|
interaction_sound = null
|
|
require_user_num_feet = 1
|
|
require_user_feet = REQUIRE_ANY
|
|
require_target_penis = REQUIRE_EXPOSED
|
|
target_not_tired = TRUE
|
|
max_distance = 1
|
|
|
|
/datum/interaction/lewd/footjob/display_interaction(mob/living/carbon/human/user, mob/living/carbon/human/target)
|
|
user.do_footjob(target)
|
|
|
|
/datum/interaction/lewd/footjob/double
|
|
command = "footjob_double"
|
|
description = "Jerk them off with both of your feet."
|
|
require_user_num_feet = 2
|
|
|
|
/datum/interaction/lewd/footjob/double/display_interaction(mob/living/carbon/human/user, mob/living/carbon/human/target)
|
|
user.do_dfootjob(target)
|
|
|
|
/datum/interaction/lewd/footjob/vagina
|
|
command = "footjob_vaginal"
|
|
description = "Rub their vagina with your foot."
|
|
require_target_vagina = REQUIRE_EXPOSED
|
|
require_target_penis = REQUIRE_NONE
|
|
|
|
/datum/interaction/lewd/footjob/vagina/display_interaction(mob/living/carbon/human/user, mob/living/carbon/human/target)
|
|
user.do_footjob_v(target)
|
|
|
|
/datum/interaction/lewd/thighs
|
|
command = "thigh_smother"
|
|
description = "Smother them."
|
|
max_distance = 1
|
|
require_user_bottomless = TRUE
|
|
require_target_mouth = TRUE
|
|
interaction_sound = null
|
|
user_not_tired = TRUE
|
|
write_log_user = "thigh-trapped"
|
|
write_log_target = "was smothered by"
|
|
|
|
/datum/interaction/lewd/thighs/display_interaction(var/mob/living/carbon/human/user, var/mob/living/carbon/human/target)
|
|
user.thigh_smother(target)
|
|
|
|
/datum/interaction/lewd/nuts
|
|
command = "nut_face"
|
|
description = "Nuts to face."
|
|
interaction_sound = null
|
|
require_user_balls = REQUIRE_EXPOSED
|
|
require_target_mouth = TRUE
|
|
max_distance = 1
|
|
write_log_user = "make-them-suck-their-nuts"
|
|
write_log_target = "was made to suck nuts by"
|
|
|
|
/datum/interaction/lewd/nuts/display_interaction(var/mob/living/carbon/human/user, var/mob/living/carbon/human/target)
|
|
user.nut_face(target)
|
|
|
|
/datum/interaction/lewd/nut_smack
|
|
command = "smack_nuts"
|
|
description = "Smack their nuts."
|
|
interaction_sound = 'sandcode/sound/interactions/slap.ogg'
|
|
simple_message = "USER slaps TARGET's nuts!"
|
|
require_target_balls = REQUIRE_EXPOSED
|
|
needs_physical_contact = TRUE
|
|
max_distance = 1
|
|
write_log_user = "slapped-nuts"
|
|
write_log_target = "had their nuts slapped by"
|
|
|
|
//Weird shit section
|
|
/datum/interaction/lewd/earfuck
|
|
command = "earfuck"
|
|
description = "Fuck their ear."
|
|
interaction_sound = null
|
|
simple_message = "USER penetrates TARGET's ear!"
|
|
require_user_penis = REQUIRE_EXPOSED
|
|
require_target_ears = REQUIRE_EXPOSED
|
|
max_distance = 1
|
|
write_log_user = "earfucked"
|
|
write_log_target = "had their ear fucked by"
|
|
extreme = TRUE
|
|
|
|
/datum/interaction/lewd/earfuck/display_interaction(mob/living/carbon/human/user, mob/living/carbon/human/target)
|
|
user.do_earfuck(target)
|
|
|
|
/datum/interaction/lewd/earfuck/earsocketfuck
|
|
command = "earsocketfuck"
|
|
description = "Fuck their earsocket."
|
|
interaction_sound = null
|
|
simple_message = "USER penetrates TARGET's earsocket!"
|
|
require_user_penis = REQUIRE_EXPOSED
|
|
require_target_earsockets = REQUIRE_EXPOSED
|
|
max_distance = 1
|
|
write_log_user = "earsocket fucked"
|
|
write_log_target = "had their earsocket fucked by"
|
|
extreme = TRUE
|
|
|
|
/datum/interaction/lewd/eyefuck
|
|
command = "eyefuck"
|
|
description = "Fuck their eye."
|
|
interaction_sound = null
|
|
simple_message = "USER penetrates TARGET's eye!"
|
|
require_user_penis = REQUIRE_EXPOSED
|
|
require_target_eyes = REQUIRE_EXPOSED
|
|
max_distance = 1
|
|
write_log_user = "eyefucked"
|
|
write_log_target = "had their eye fucked by"
|
|
extreme = TRUE
|
|
|
|
/datum/interaction/lewd/eyefuck/display_interaction(mob/living/carbon/human/user, mob/living/carbon/human/target)
|
|
user.do_eyefuck(target)
|
|
|
|
/datum/interaction/lewd/eyefuck/eyesocketfuck
|
|
command = "eyesocketfuck"
|
|
description = "Fuck their eyesocket."
|
|
interaction_sound = null
|
|
simple_message = "USER penetrates TARGET's eyesocket!"
|
|
require_user_penis = REQUIRE_EXPOSED
|
|
require_target_eyesockets = REQUIRE_EXPOSED
|
|
max_distance = 1
|
|
write_log_user = "eyesocketfucked"
|
|
write_log_target = "had their eyesocket fucked by"
|
|
extreme = TRUE
|
|
//
|