mirror of
https://github.com/Sandstorm-Station/Sandstorm-Station-13.git
synced 2026-07-19 12:14:32 +01:00
update content
This commit is contained in:
@@ -75,12 +75,18 @@
|
||||
if(spill && R.total_volume >= 5)
|
||||
R.reaction(turfing ? target : target.loc, TOUCH, 1, 0)
|
||||
if(!turfing)
|
||||
R.trans_to(target, R.total_volume * (spill ? G.fluid_transfer_factor : 1), log = TRUE)
|
||||
// sandstorm edit - advanced cum drip
|
||||
var/amount_to_transfer = R.total_volume * (spill ? G.fluid_transfer_factor : 1)
|
||||
R.trans_to(target, amount_to_transfer, log = TRUE)
|
||||
if(ishuman(target))
|
||||
// Nope, on the mouth doesn't count.
|
||||
if(!(istype(last_lewd_datum, /datum/interaction/lewd/facefuck) || istype(last_lewd_datum, /datum/interaction/lewd/throatfuck)))
|
||||
var/datum/reagent/consumable/semen/salty_drink = target.reagents.get_reagent(/datum/reagent/consumable/semen)
|
||||
salty_drink.amount_to_drip += amount_to_transfer
|
||||
//
|
||||
G.last_orgasmed = world.time
|
||||
R.clear_reagents()
|
||||
//skyrat edit - chock i am going to beat you to death
|
||||
//this is not a joke i am actually going to break your
|
||||
//ribcage
|
||||
//sandstorm edit - gain momentum from dirty deeds.
|
||||
if(!Process_Spacemove(turn(dir, 180)))
|
||||
newtonian_move(turn(dir, 180))
|
||||
//
|
||||
@@ -216,6 +222,11 @@
|
||||
|
||||
if(!client?.prefs.arousable || !has_dna())
|
||||
return
|
||||
|
||||
if(HAS_TRAIT(src, TRAIT_NEVERBONER))
|
||||
to_chat(src, span_warning("You don't feel like it at all."))
|
||||
return
|
||||
|
||||
if(stat == DEAD)
|
||||
if(!forced_climax)
|
||||
to_chat(src, "<span class='warning'>You can't do that while dead!</span>")
|
||||
|
||||
@@ -562,7 +562,6 @@
|
||||
description = "Naturally found in the crocus and gardenia flowers, this drug acts as a natural and safe aphrodisiac."
|
||||
taste_description = "strawberries"
|
||||
color = "#FFADFF"//PINK, rgb(255, 173, 255)
|
||||
can_synth = FALSE
|
||||
|
||||
/datum/reagent/drug/aphrodisiac/on_mob_life(mob/living/M)
|
||||
if(M && M.client?.prefs.arousable && !(M.client?.prefs.cit_toggles & NO_APHRO))
|
||||
@@ -588,7 +587,6 @@
|
||||
color = "#FF2BFF"//dark pink
|
||||
addiction_threshold = 20
|
||||
overdose_threshold = 20
|
||||
can_synth = FALSE
|
||||
|
||||
/datum/reagent/drug/aphrodisiacplus/on_mob_life(mob/living/M)
|
||||
if(M && M.client?.prefs.arousable && !(M.client?.prefs.cit_toggles & NO_APHRO))
|
||||
@@ -644,7 +642,6 @@
|
||||
taste_mult = 2
|
||||
color = "#D9D9D9"//rgb(217, 217, 217)
|
||||
reagent_state = SOLID
|
||||
can_synth = FALSE
|
||||
|
||||
/datum/reagent/drug/anaphrodisiac/on_mob_life(mob/living/M)
|
||||
if(M && M.client?.prefs.arousable && prob(16))
|
||||
@@ -662,7 +659,6 @@
|
||||
color = "#D9D9D9"//rgb(217, 217, 217)
|
||||
reagent_state = SOLID
|
||||
overdose_threshold = 20
|
||||
can_synth = FALSE
|
||||
|
||||
/datum/reagent/drug/anaphrodisiacplus/on_mob_life(mob/living/M)
|
||||
if(M && M.client?.prefs.arousable)
|
||||
|
||||
@@ -2517,8 +2517,9 @@
|
||||
var/obj/effect/decal/cleanable/semen/S = locate() in T
|
||||
if(!S)
|
||||
S = new decal_path(T)
|
||||
if(data["blood_DNA"])
|
||||
S.add_blood_DNA(list(data["blood_DNA"] = data["blood_type"]))
|
||||
// Sandstorm edit - cum carries your genetic info (all of it)
|
||||
if(data)
|
||||
S.add_blood_DNA(data)
|
||||
|
||||
/obj/effect/decal/cleanable/semen
|
||||
name = "semen"
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -7,3 +7,15 @@
|
||||
icon = 'modular_sand/icons/obj/genitals/effects.dmi'
|
||||
icon_state = "drip1"
|
||||
random_icon_states = list("drip1", "drip2", "drip3", "drip4")
|
||||
var/total_amount = 1
|
||||
|
||||
/obj/effect/decal/cleanable/semendrip/replace_decal(obj/effect/decal/cleanable/semendrip/C)
|
||||
. = ..()
|
||||
C.total_amount++
|
||||
C.transfer_blood_dna(src.blood_DNA)
|
||||
if(C.total_amount >= 10)
|
||||
var/obj/effect/decal/cleanable/semen/S = new(loc)
|
||||
S.transfer_blood_dna(C.blood_DNA)
|
||||
qdel(C)
|
||||
|
||||
return TRUE
|
||||
|
||||
@@ -2,6 +2,19 @@
|
||||
. = ..()
|
||||
set_lust(0)
|
||||
SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "orgasm", /datum/mood_event/orgasm)
|
||||
var/message_to_display
|
||||
// We got pleased, let's get rid of some of it
|
||||
var/crocin_amount = reagents.get_reagent_amount(/datum/reagent/drug/aphrodisiac)
|
||||
if(crocin_amount)
|
||||
reagents.remove_reagent(/datum/reagent/drug/aphrodisiac, rand(10, max(30, crocin_amount / 5)))
|
||||
message_to_display = span_userlove("Mnn.. Yes...~")
|
||||
// More potent, harder to get rid of
|
||||
var/hexacrocin_amount = reagents.get_reagent_amount(/datum/reagent/drug/aphrodisiacplus)
|
||||
if(hexacrocin_amount)
|
||||
reagents.remove_reagent(/datum/reagent/drug/aphrodisiacplus, rand(2, max(15, hexacrocin_amount / 6)))
|
||||
message_to_display = span_userlove("YES~!")
|
||||
if(message_to_display)
|
||||
to_chat(src, message_to_display)
|
||||
|
||||
/mob/living/carbon/human/proc/pick_receiving_organ(mob/living/L)
|
||||
if (!iscarbon(L))
|
||||
@@ -22,9 +35,6 @@
|
||||
var/mob/living/carbon/human/h_self = src
|
||||
var/mob/living/carbon/human/h_partner = null
|
||||
|
||||
if(istype(source_gen, /obj/item/organ/genital/penis))
|
||||
h_self.cumdrip_rate += rand(5,10)
|
||||
|
||||
if(ishuman(partner))
|
||||
h_partner = partner
|
||||
if(receiver)
|
||||
|
||||
@@ -1,11 +0,0 @@
|
||||
/mob/living/carbon/human/handle_creampie()
|
||||
if(cumdrip_rate < 0)
|
||||
cumdrip_rate = 0
|
||||
|
||||
if(bodytemperature >= TCRYO)
|
||||
cumdrip_rate = cumdrip_rate - 1
|
||||
cumdrip()
|
||||
|
||||
/mob/living/carbon/human/proc/cumdrip()
|
||||
if(isturf(loc))
|
||||
new/obj/effect/decal/cleanable/semendrip(get_turf(src))
|
||||
@@ -1,2 +0,0 @@
|
||||
/mob/living/carbon/human
|
||||
var/cumdrip_rate = 0 //how long are we dripping jizz for?
|
||||
@@ -1,6 +0,0 @@
|
||||
//Hyper change, adds cumdrip
|
||||
/mob/living/carbon/human/BiologicalLife(seconds, times_fired)
|
||||
if(!(. = ..()))
|
||||
return
|
||||
if(cumdrip_rate > 0 && stat != DEAD)
|
||||
handle_creampie()
|
||||
@@ -0,0 +1,13 @@
|
||||
/datum/reagent/drug/anaphrodisiac/on_mob_life(mob/living/M)
|
||||
if(M && M.client?.prefs.arousable)
|
||||
M.add_lust(max(2, M.get_lust() / 5) * -1)
|
||||
if(prob(0.5))
|
||||
to_chat(M, span_warning("You don't feel quite like it."))
|
||||
return ..()
|
||||
|
||||
/datum/reagent/drug/anaphrodisiacplus/on_mob_life(mob/living/M)
|
||||
if(M && M.client?.prefs.arousable)
|
||||
M.add_lust(max(10, M.get_lust() / 4) * -1)
|
||||
if(prob(0.2))
|
||||
to_chat(M, span_boldwarning("Nope, certainly don't feel like it."))
|
||||
return ..()
|
||||
@@ -16,6 +16,17 @@
|
||||
if(method==PATCH || method==INGEST || method==INJECT || (method == VAPOR && prob(min(reac_volume,100)*(1 - touch_protection))))
|
||||
L.ForceContractDisease(new /datum/disease/transformation/dragon(), FALSE, TRUE)
|
||||
|
||||
/datum/reagent/consumable/semen
|
||||
// Prevents dripping from drinking a glass or other weird cases
|
||||
var/amount_to_drip = 0
|
||||
|
||||
/datum/reagent/consumable/semen/on_mob_life(mob/living/carbon/M)
|
||||
. = ..()
|
||||
if(amount_to_drip && M.is_groin_exposed())
|
||||
amount_to_drip = max(0, amount_to_drip - metabolization_rate)
|
||||
var/obj/effect/decal/cleanable/semendrip/drip = new(get_turf(M))
|
||||
drip.add_blood_DNA(data)
|
||||
|
||||
/*/datum/reagent/dragon_blood/admin
|
||||
name = "Special dragon blood"
|
||||
description = "It looks weird"
|
||||
|
||||
+1
-3
@@ -4087,7 +4087,6 @@
|
||||
#include "modular_sand\code\modules\admin\verbs\fix_air.dm"
|
||||
#include "modular_sand\code\modules\admin\verbs\randomverbs.dm"
|
||||
#include "modular_sand\code\modules\arousal\arousal.dm"
|
||||
#include "modular_sand\code\modules\arousal\creampie.dm"
|
||||
#include "modular_sand\code\modules\arousal\genital_sprite_accessories.dm"
|
||||
#include "modular_sand\code\modules\arousal\genitals.dm"
|
||||
#include "modular_sand\code\modules\arousal\organs\breasts.dm"
|
||||
@@ -4176,9 +4175,7 @@
|
||||
#include "modular_sand\code\modules\mob\living\carbon\life.dm"
|
||||
#include "modular_sand\code\modules\mob\living\carbon\show.dm"
|
||||
#include "modular_sand\code\modules\mob\living\carbon\human\human.dm"
|
||||
#include "modular_sand\code\modules\mob\living\carbon\human\human_defines.dm"
|
||||
#include "modular_sand\code\modules\mob\living\carbon\human\human_stripping.dm"
|
||||
#include "modular_sand\code\modules\mob\living\carbon\human\life.dm"
|
||||
#include "modular_sand\code\modules\mob\living\carbon\human\species.dm"
|
||||
#include "modular_sand\code\modules\mob\living\carbon\human\species_types\anthropomorph.dm"
|
||||
#include "modular_sand\code\modules\mob\living\carbon\human\species_types\ipc.dm"
|
||||
@@ -4233,6 +4230,7 @@
|
||||
#include "modular_sand\code\modules\reagents\chemistry\reagents\alcohol_reagents.dm"
|
||||
#include "modular_sand\code\modules\reagents\chemistry\reagents\cit_reagents.dm"
|
||||
#include "modular_sand\code\modules\reagents\chemistry\reagents\drink_reagents.dm"
|
||||
#include "modular_sand\code\modules\reagents\chemistry\reagents\drug_reagents.dm"
|
||||
#include "modular_sand\code\modules\reagents\chemistry\reagents\fermi_reagents.dm"
|
||||
#include "modular_sand\code\modules\reagents\chemistry\reagents\medicine_reagents.dm"
|
||||
#include "modular_sand\code\modules\reagents\chemistry\reagents\other_reagents.dm"
|
||||
|
||||
@@ -25,6 +25,7 @@ type InteractionData = {
|
||||
key: string;
|
||||
desc: string;
|
||||
type: number;
|
||||
additionalDetails: string[];
|
||||
}
|
||||
|
||||
type GenitalInfo = {
|
||||
@@ -195,7 +196,21 @@ const InteractionsTab = (props, context) => {
|
||||
mb={0.3}
|
||||
onClick={() => act('interact', {
|
||||
interaction: interaction.key,
|
||||
})} />
|
||||
})}>
|
||||
{interaction.additionalDetails && (
|
||||
interaction.additionalDetails.map(detail => (
|
||||
<Button
|
||||
key={detail}
|
||||
position="absolute"
|
||||
right="0"
|
||||
width="5.5%"
|
||||
tooltip={detail.info}
|
||||
color={detail.color}
|
||||
>
|
||||
<Icon name={detail.icon} />
|
||||
</Button>
|
||||
)))}
|
||||
</Button>
|
||||
</Table.Row>
|
||||
))
|
||||
) : (
|
||||
|
||||
Reference in New Issue
Block a user