allow objects for certain interactions

no animals still
This commit is contained in:
sarcoph
2022-05-04 23:54:21 -08:00
parent 1e7e2949b3
commit e1a6c16dd0
3 changed files with 41 additions and 37 deletions
+2
View File
@@ -60,6 +60,8 @@ GLOBAL_LIST_INIT(turfs_without_ground, typecacheof(list(
#define isbrain(A) (istype(A, /mob/living/brain))
#define isnoncarbon(A) (isliving(A) && !iscarbon(A))
//Carbon mobs
#define iscarbon(A) (istype(A, /mob/living/carbon))
+12 -16
View File
@@ -45,19 +45,17 @@
if(Belly.inflatable)
dat += "<a href='byond://?src=[REF(src)];shrink_belly=1'>Deflate belly</A>"
dat += "(Shrink your belly down a size)<BR>"
if(user.pulling)
if(!(isliving(user.pulling) && !iscarbon(user.pulling))) // do not fuck animals
dat += "<a href='byond://?src=[REF(src)];climaxover=1'>Climax over [user.pulling]</A>" //you can cum on objects if you really want...
dat += "(Orgasm over a person or object.)<BR>"
if(iscarbon(user.pulling))
dat += "<a href='byond://?src=[REF(src)];climaxwith=1'>Climax with [user.pulling]</A>"
dat += {"(Orgasm with another person.)<BR>"}
var/mob/living/carbon/human/H = user.pulling
if(H && H.breedable && P)
dat += "<a href='byond://?src=[REF(src)];impreg=1'>Impregnate [U.pulling] ([clamp(U.impregchance,0,100)]%)</A>"
dat += "(Climax inside another person, and attempt to knock them up.)<BR>"
if(user.pulling && !isnoncarbon(user.pulling)) // do not fuck animals
dat += "<a href='byond://?src=[REF(src)];climaxover=1'>Climax over [user.pulling]</A>" //you can cum on objects if you really want...
dat += "(Orgasm over a person or object.)<BR>"
if(iscarbon(user.pulling))
dat += "<a href='byond://?src=[REF(src)];climaxwith=1'>Climax with [user.pulling]</A>"
dat += {"(Orgasm with another person.)<BR>"}
var/mob/living/carbon/human/H = user.pulling
if(H && H.breedable && P)
dat += "<a href='byond://?src=[REF(src)];impreg=1'>Impregnate [U.pulling] ([clamp(U.impregchance,0,100)]%)</A>"
dat += "(Climax inside another person, and attempt to knock them up.)<BR>"
else
dat += "<span class='linkOff'>Climax over</span></A>"
dat += "(Requires a partner)<BR>"
@@ -80,11 +78,9 @@
dat += "<a href='byond://?src=[REF(src)];omenu=1'>Old Menu</A>"
dat += "<a href='byond://?src=[REF(src)];underwear=1'>Toggle Undergarments </A>"
dat += "<BR>"
var/datum/browser/popup = new(user, "arousal", "Arousal Panel")
popup.set_content(dat)
popup.set_title_image(user.browse_rsc_icon(icon, icon_state), 500,600)
popup.open()
@@ -384,7 +380,7 @@ obj/screen/arousal/proc/kiss()
to_chat(src, "<span class='warning'>You cannot climax without choosing genitals.</span>")
return
src << browse(null, "window=arousal") //alls fine, we can close the window now.
if(!partner || (isliving(partner) !iscarbon(partner)))
if(!partner || isnoncarbon(partner))
to_chat(src, "<span class='warning'>You cannot do this alone.</span>")
return
var/obj/item/organ/genital/penis/P = picked_organ
+27 -21
View File
@@ -329,7 +329,9 @@
setArousalLoss(min_arousal)
/mob/living/carbon/human/proc/mob_climax_partner(obj/item/organ/genital/G, mob/living/carbon/partner, spillage = TRUE, impreg = FALSE,cover = FALSE,remote = FALSE, mb_time = 30) //Used for climaxing with any person
/mob/living/carbon/human/proc/mob_climax_partner(obj/item/organ/genital/G, atom/partner, spillage = TRUE, impreg = FALSE,cover = FALSE,remote = FALSE, mb_time = 30) //Used for climaxing with any person
if(isnoncarbon(partner)) // deny animals
return
var/total_fluids = 0
var/datum/reagents/fluid_source = null
if(G.producing) //Can it produce its own fluids, such as breasts?
@@ -342,17 +344,17 @@
total_fluids = fluid_source.total_volume
if(mb_time && !remote) //Skip warning if this is an instant climax.
src.visible_message("<span class='love'>[src] is about to climax with [partner]!</span>", \
"<span class='userlove'>You're about to climax with [partner]!</span>", \
"<span class='userlove'>You're preparing to climax with something!</span>")
"<span class='userlove'>You're about to climax with [partner]!</span>", \
"<span class='userlove'>You're preparing to climax with something!</span>")
if(remote)
src.visible_message("<span class='love'>[src] is about to climax with someone!</span>", \
"<span class='userlove'>You're about to climax with someone!</span>", \
"<span class='userlove'>You're preparing to climax with something!</span>")
"<span class='userlove'>You're about to climax with someone!</span>", \
"<span class='userlove'>You're preparing to climax with something!</span>")
if(cover)//covering the partner in cum, this overrides other options.
if(do_after(src, mb_time, target = src) && in_range(src, partner))
fluid_source.trans_to(partner, total_fluids*G.fluid_transfer_factor)
total_fluids -= total_fluids*G.fluid_transfer_factor
if(total_fluids > 80) // now thats a big cum!
if(total_fluids > 80 && iscarbon(partner)) // now thats a big cum!
var/mutable_appearance/cumoverlaylarge = mutable_appearance('hyperstation/icons/effects/cumoverlay.dmi')
cumoverlaylarge.icon_state = "cum_large"
partner.add_overlay(cumoverlaylarge)
@@ -363,12 +365,15 @@
H.cumdrip_rate += rand(5,10)
fluid_source.clear_reagents()
src.visible_message("<span class='love'>[src] climaxes over [partner], using [p_their()] [G.name]!</span>", \
"<span class='userlove'>You orgasm over [partner], using your [G.name].</span>", \
"<span class='userlove'>You have climaxed over something, using your [G.name].</span>")
"<span class='userlove'>You orgasm over [partner], using your [G.name].</span>", \
"<span class='userlove'>You have climaxed over something, using your [G.name].</span>")
SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "orgasm", /datum/mood_event/orgasm)
var/mutable_appearance/cumoverlay = mutable_appearance('hyperstation/icons/effects/cumoverlay.dmi')
cumoverlay.icon_state = "cum_normal"
partner.add_overlay(cumoverlay)
if(iscarbon(partner))
var/mutable_appearance/cumoverlay = mutable_appearance('hyperstation/icons/effects/cumoverlay.dmi')
cumoverlay.icon_state = "cum_normal"
partner.add_overlay(cumoverlay)
else
partner.add_cum_overlay()
setArousalLoss(min_arousal)
if(G.can_climax)
setArousalLoss(min_arousal)
@@ -407,12 +412,12 @@
total_fluids = 0
if(!remote)
src.visible_message("<span class='love'>[src] climaxes with [partner], [p_their()] [G.name] spilling nothing!</span>", \
"<span class='userlove'>You ejaculate with [partner], your [G.name] spilling nothing.</span>", \
"<span class='userlove'>You have climaxed inside someone, your [G.name] spilling nothing.</span>")
"<span class='userlove'>You ejaculate with [partner], your [G.name] spilling nothing.</span>", \
"<span class='userlove'>You have climaxed inside someone, your [G.name] spilling nothing.</span>")
else
src.visible_message("<span class='love'>[src] climaxes with someone, using [p_their()] [G.name]!</span>", \
"<span class='userlove'>You ejaculate with someone, using your [G.name].</span>", \
"<span class='userlove'>You have climaxed inside someone, using your [G.name].</span>")
"<span class='userlove'>You ejaculate with someone, using your [G.name].</span>", \
"<span class='userlove'>You have climaxed inside someone, using your [G.name].</span>")
to_chat(partner, "<span class='userlove'>You feel someone ejaculate inside you.</span>")
SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "orgasm", /datum/mood_event/orgasm)
@@ -421,18 +426,19 @@
if(G.can_climax)
setArousalLoss(min_arousal)
//Hyper - antag code
var/mob/living/carbon/partner_carbon = partner
if(src.mind.special_role == ROLE_LEWD_TRAITOR)
for(var/datum/objective/obj in src.mind.objectives)
if (partner.mind == obj.target)
partner.mind.sexed = TRUE //sexed
if (partner_carbon.mind == obj.target)
partner_carbon.mind.sexed = TRUE //sexed
to_chat(src, "<span class='userlove'>You feel deep satisfaction with yourself.</span>")
//Hyper - impreg
if(impreg)
//Role them odds, only people with the dicks can send the chance to the person with the settings enabled at the momment.
if(prob(partner.impregchance))
var/obj/item/organ/genital/womb/W = partner.getorganslot("womb")
if(prob(partner_carbon.impregchance))
var/obj/item/organ/genital/womb/W = partner_carbon.getorganslot("womb")
if(W) //check if they have a womb.
if (partner.breedable && !W.pregnant) //Dont get pregnant again, if you are pregnant.
if (partner_carbon.breedable && !W.pregnant) //Dont get pregnant again, if you are pregnant.
log_game("Debug: [partner] has been impregnated by [src]")
to_chat(partner, "<span class='userlove'>You feel your hormones change, and a motherly instinct take over.</span>") //leting them know magic has happened.
W.pregnant = 1
@@ -440,7 +446,7 @@
SEND_SIGNAL(partner, COMSIG_ADD_MOOD_EVENT, "heat", /datum/mood_event/heat) //well done you perv.
REMOVE_TRAIT(partner, TRAIT_HEAT, ROUNDSTART_TRAIT) //take the heat away, you satisfied it!
//Make breasts produce quicker.
var/obj/item/organ/genital/breasts/B = partner.getorganslot("breasts")
var/obj/item/organ/genital/breasts/B = partner_carbon.getorganslot("breasts")
if (B.fluid_mult < 0.5 && B)
B.fluid_mult = 0.5