impregnation update

This commit is contained in:
quotefox
2019-10-25 17:03:19 +01:00
parent f99aa635e3
commit ab375c58d0
9 changed files with 68 additions and 39 deletions
+1 -1
View File
@@ -24,7 +24,7 @@
var/moving_diagonally = 0 //0: not doing a diagonal move. 1 and 2: doing the first/second step of the diagonal move
var/list/client_mobs_in_contents // This contains all the client mobs within this container
var/list/acted_explosions //for explosion dodging
glide_size = 14
glide_size = 13
appearance_flags = TILE_BOUND|PIXEL_SCALE
var/datum/forced_movement/force_moving = null //handled soley by forced_movement.dm
var/floating = FALSE
@@ -576,9 +576,10 @@
//h13 assign your characters custom height.
if (H.custom_body_size > 0)
H.resize = (H.custom_body_size * 0.01)
//Move large characters up slightly. small character dont really need this.
H.pixel_y = min(((H.custom_body_size-100) * 0.25), 0)
//h13 give your starting impregchance (30%)
if (H.breedable == TRUE)
H.impregchance = 30
. = H
new_character = .
+3 -1
View File
@@ -53,8 +53,10 @@
var/mob_size = MOB_SIZE_HUMAN
//H13 custom body size
//H13 custom body size and impregnation
var/custom_body_size = 1
var/breedable = 0
var/impregchance = 0
var/list/mob_biotypes = list(MOB_ORGANIC)
+16 -28
View File
@@ -1,6 +1,6 @@
/obj/item/pregnancytest
name = "pregnancy test"
desc = "a one time use small device, used to determine if someone is pregnant or not. Also comes with a force feature to freak out your ex (alt click)."
desc = "a one time use small device, used to determine if someone is pregnant or not."
icon = 'hyperstation/icons/obj/pregnancytest.dmi'
throwforce = 0
icon_state = "ptest"
@@ -22,34 +22,22 @@
return //Already been used once, pregnancy tests only work once.
test(user)
/obj/item/pregnancytest/AltClick(mob/living/user)
if(QDELETED(src))
return
if(!isliving(user))
return
if(isAI(user))
return
if(user.stat > 0)//unconscious or dead
return //Already been used once, pregnancy tests only work once.
if(status == 1)
return
force(user)
/obj/item/pregnancytest/proc/force(mob/living/user)
//just for fun or roleplay, force it.
results = "positive"
icon_state = "positive"
status = 1
name = "[results] pregnancy test"
to_chat(user, "<span class='notice'>You force the device to read possive.</span>")
/obj/item/pregnancytest/proc/test(mob/living/user)
//This is where the pregancy checker would be, if and when pregnancy is coded. SO we can always assume the person is not pregnant because there is no code for it.
results = "negative"
//Force it negative
icon_state = "negative"
name = "[results] pregnancy test"
status = 1
to_chat(user, "<span class='notice'>You use the pregnancy test, after a pause one pink line lights up on the display, reading negative.</span>")
to_chat(user, "<span class='notice'>You use the pregnancy test, the display reads positive!</span>")
/obj/item/pregnancytest/proc/test(mob/living/user)
var/obj/item/organ/genital/womb/W = user.getorganslot("womb")
if(W.pregnant == 1)
results = "positive"
icon_state = "positive"
name = "[results] pregnancy test"
status = 1
to_chat(user, "<span class='notice'>You use the pregnancy test, the display reads positive!</span>")
else
force(user)
Binary file not shown.

Before

Width:  |  Height:  |  Size: 472 B

After

Width:  |  Height:  |  Size: 487 B

@@ -301,7 +301,7 @@
setArousalLoss(min_arousal)
/mob/living/carbon/human/proc/mob_climax_partner(obj/item/organ/genital/G, mob/living/L, spillage = TRUE, mb_time = 30) //Used for climaxing with any living thing
/mob/living/carbon/human/proc/mob_climax_partner(obj/item/organ/genital/G, mob/living/L, spillage = TRUE, impreg = FALSE, mb_time = 30) //Used for climaxing with any living thing
var/total_fluids = 0
var/datum/reagents/fluid_source = null
@@ -329,8 +329,11 @@
"<span class='userlove'>You have climaxed with someone[spillage ? ", spilling out of them":""], using your [G.name].</span>")
SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "orgasm", /datum/mood_event/orgasm)
SEND_SIGNAL(L, COMSIG_ADD_MOOD_EVENT, "orgasm", /datum/mood_event/orgasm)
if(G.can_climax)
setArousalLoss(min_arousal)
else //knots and other non-spilling orgasms
if(do_after(src, mb_time, target = src) && in_range(src, L))
fluid_source.trans_to(L, total_fluids)
@@ -340,9 +343,17 @@
"<span class='userlove'>You have climaxed inside someone, your [G.name] spilling nothing.</span>")
SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "orgasm", /datum/mood_event/orgasm)
SEND_SIGNAL(L, COMSIG_ADD_MOOD_EVENT, "orgasm", /datum/mood_event/orgasm)
if(G.can_climax)
setArousalLoss(min_arousal)
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 (rand(0,100) < L.impregchance && L.breedable == 1)
log_game("Debug: [L] has been impregnated by [src]")
var/obj/item/organ/genital/womb/W = L.getorganslot("womb")
W.pregnant = 1
/mob/living/carbon/human/proc/mob_fill_container(obj/item/organ/genital/G, obj/item/reagent_containers/container, mb_time = 30) //For beaker-filling, beware the bartender
var/total_fluids = 0
@@ -555,12 +566,30 @@
if(picked_organ)
var/mob/living/partner = pick_partner() //Get someone
if(partner)
var/spillage = input(src, "Would your fluids spill outside?", "Choose overflowing option", "Yes") as anything in list("Yes", "No")
if(spillage == "Yes")
mob_climax_partner(picked_organ, partner, TRUE)
else
mob_climax_partner(picked_organ, partner, FALSE)
return
if(partner.breedable == 1 && picked_organ.name == "penis")
var/impreg = input(src, "Would this action carry the risk of pregnancy?", "Choose a option", "Yes") as anything in list("Yes", "No")
if(impreg == "Yes") //If we are impregging
var/spillage = input(src, "Would your fluids spill outside?", "Choose overflowing option", "Yes") as anything in list("Yes", "No")
if(spillage == "Yes")
mob_climax_partner(picked_organ, partner, TRUE, TRUE)
else
mob_climax_partner(picked_organ, partner, FALSE, TRUE)
else
var/spillage = input(src, "Would your fluids spill outside?", "Choose overflowing option", "Yes") as anything in list("Yes", "No")
if(spillage == "Yes")
mob_climax_partner(picked_organ, partner, TRUE, FALSE)
else
mob_climax_partner(picked_organ, partner, FALSE, FALSE) //Wow, im trash at coding, I need to find a better way of coding this, ill rewrite it later.-quote
return
else //If we arent impregging
var/spillage = input(src, "Would your fluids spill outside?", "Choose overflowing option", "Yes") as anything in list("Yes", "No")
if(spillage == "Yes")
mob_climax_partner(picked_organ, partner, TRUE, FALSE)
else
mob_climax_partner(picked_organ, partner, FALSE, FALSE)
return
else
to_chat(src, "<span class='warning'>You cannot do this alone.</span>")
return
@@ -145,6 +145,8 @@
give_vagina()
if(dna.features["has_womb"])
give_womb()
if(dna.features["can_get_preg"])
make_breedable() //hyperstation set up the pregnancy stuff
if(dna.features["has_balls"])
give_balls()
if(dna.features["has_breasts"]) // since we have multi-boobs as a thing, we'll want to at least draw over these. but not over the pingas.
@@ -266,6 +268,10 @@
if(W)
W.update()
/mob/living/carbon/human/proc/make_breedable()
//Hyperstation, This makes the character able to use the impreg features of the game
breedable = 1
impregchance = 30 //30% is a good base chance
/datum/species/proc/genitals_layertext(layer)
switch(layer)
@@ -8,6 +8,8 @@
internal = TRUE
fluid_id = "femcum"
producing = TRUE
var/pregnant = FALSE //this is for pregnancy code
/obj/item/organ/genital/womb/on_life()
if(QDELETED(src))
@@ -72,6 +72,7 @@
WRITE_FILE(S["feature_vag_color"], features["vag_color"])
//womb features
WRITE_FILE(S["feature_has_womb"], features["has_womb"])
//pregnancy features
WRITE_FILE(S["feature_can_get_preg"], features["can_get_preg"])
//flavor text
WRITE_FILE(S["feature_flavor_text"], features["flavor_text"])