/datum/interaction/lewd/do_breastfeed
description = "Breastfeed them"
required_from_user_exposed = INTERACTION_REQUIRE_BREASTS
required_from_target = INTERACTION_REQUIRE_MOUTH
write_log_user = "breastfed"
write_log_target = "was breastfed by"
interaction_sound = null
additional_details = list(
list(
"info" = "Will feed the target with your breasts' reagents if any",
"icon" = "cow",
"color" = "white"
)
)
/datum/interaction/lewd/do_breastfeed/display_interaction(mob/living/user, mob/living/target)
var/message
var/u_His = user.p_their()
var/u_He = user.p_they()
var/t_His = target.p_their()
var/obj/item/organ/genital/breasts/milkers = user.getorganslot(ORGAN_SLOT_BREASTS)
var/milktype = milkers?.fluid_id
var/modifier
var/list/lines
if(!milkers || !milktype)
return
var/datum/reagent/milk = find_reagent_object_from_type(milktype)
var/milktext = milk.name
lines = list(
"pushes [u_His] breasts against \the [target]'s mouth, squirting [u_His] warm [lowertext(milktext)] into [t_His] mouth",
"fills \the [target]'s mouth with warm, sweet [lowertext(milktext)] as [u_He] squeezes [u_His] boobs, panting",
"lets a large stream of [u_His] own abundant [lowertext(milktext)] coat the back of \the [target]'s throat"
)
message = span_lewd("\The [user] [pick(lines)]")
user.visible_message(message, ignored_mobs = user.get_unconsenting())
playlewdinteractionsound(get_turf(user), pick('modular_sand/sound/interactions/oral1.ogg',
'modular_sand/sound/interactions/oral2.ogg'), 70, 1, -1)
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
target.reagents.add_reagent(milktype, rand(1,3 * modifier))
/datum/interaction/lewd/titgrope
description = "Grope their breasts."
required_from_user = INTERACTION_REQUIRE_HANDS
required_from_target_exposed = INTERACTION_REQUIRE_BREASTS
required_from_target_unexposed = INTERACTION_REQUIRE_BREASTS
write_log_user = "groped"
write_log_target = "was groped by"
interaction_sound = null
additional_details = list(
INTERACTION_FILLS_CONTAINERS
)
/datum/interaction/lewd/titgrope/display_interaction(mob/living/carbon/human/user, mob/living/carbon/human/target)
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
if(liquid_container)
var/obj/item/organ/genital/breasts/milkers = target.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(span_lewd("\The [user] milks [target]'s breasts into \the [liquid_container]."), ignored_mobs = user.get_unconsenting())
playlewdinteractionsound(get_turf(user), 'modular_sand/sound/interactions/squelch1.ogg', 50, 1, -1)
else
if(user.a_intent == INTENT_HARM)
user.visible_message(
pick(span_lewd("\The [user] aggressively gropes \the [target]'s breast."),
span_lewd("\The [user] grabs \the [target]'s breasts."),
span_lewd("\The [user] tightly squeezes \the [target]'s breasts."),
span_lewd("\The [user] slaps at \the [target]'s breasts."),
span_lewd("\The [user] gropes \the [target]'s breasts roughly.")))
else
user.visible_message(
pick(span_lewd("\The [user] gently gropes \the [target]'s breast."),
span_lewd("\The [user] softly squeezes \the [target]'s breasts."),
span_lewd("\The [user] grips \the [target]'s breasts."),
span_lewd("\The [user] runs a few fingers over \the [target]'s breast."),
span_lewd("\The [user] delicately teases \the [target]'s nipple."),
span_lewd("\The [user] traces a touch across \the [target]'s breast.")))
if(prob(5 + target.get_lust()))
if(target.a_intent == INTENT_HELP)
user.visible_message(
pick(span_lewd("\The [target] shivers in arousal."),
span_lewd("\The [target] moans quietly."),
span_lewd("\The [target] breathes out a soft moan."),
span_lewd("\The [target] gasps."),
span_lewd("\The [target] shudders softly."),
span_lewd("\The [target] trembles as hands run across bare skin.")))
if(target.get_lust() < 5)
target.set_lust(5)
if(target.a_intent == INTENT_DISARM)
if (target.restrained())
user.visible_message(
pick(span_lewd("\The [target] twists playfully against the restraints."),
span_lewd("\The [target] squirms away from [user]'s hand."),
span_lewd("\The [target] slides back from [user]'s roaming hand."),
span_lewd("\The [target] thrusts bare breasts forward into [user]'s hands.")))
else
user.visible_message(
pick(span_lewd("\The [target] playfully bats at [user]'s hand."),
span_lewd("\The [target] squirms away from [user]'s hand."),
span_lewd("\The [target] guides [user]'s hand across bare breasts."),
span_lewd("\The [target] teasingly laces a few fingers over [user]'s knuckles.")))
if(target.get_lust() < 10)
target.add_lust(1)
if(target.a_intent == INTENT_GRAB)
user.visible_message(
pick(span_lewd("\The [target] grips [user]'s wrist tight."),
span_lewd("\The [target] digs nails into [user]'s arm."),
span_lewd("\The [target] grabs [user]'s wrist for a second.")))
if(target.a_intent == INTENT_HARM)
user.adjustBruteLoss(1)
user.visible_message(
pick(span_lewd("\The [target] pushes [user] roughly away."),
span_lewd("\The [target] digs nails angrily into [user]'s arm."),
span_lewd("\The [target] fiercely struggles against [user]."),
span_lewd("\The [target] claws [user]'s forearm, drawing blood."),
span_lewd("\The [target] slaps [user]'s hand away.")))