diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm index 0e01be99..67d4789e 100644 --- a/code/game/atoms_movable.dm +++ b/code/game/atoms_movable.dm @@ -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 diff --git a/code/modules/mob/dead/new_player/new_player.dm b/code/modules/mob/dead/new_player/new_player.dm index 4be2dd1c..a0e73c4e 100644 --- a/code/modules/mob/dead/new_player/new_player.dm +++ b/code/modules/mob/dead/new_player/new_player.dm @@ -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 = . diff --git a/code/modules/mob/living/living_defines.dm b/code/modules/mob/living/living_defines.dm index c89c2cc9..b6e2c16a 100644 --- a/code/modules/mob/living/living_defines.dm +++ b/code/modules/mob/living/living_defines.dm @@ -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) diff --git a/hyperstation/code/obj/pregnancytester.dm b/hyperstation/code/obj/pregnancytester.dm index dcf12cff..6b751747 100644 --- a/hyperstation/code/obj/pregnancytester.dm +++ b/hyperstation/code/obj/pregnancytester.dm @@ -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, "You force the device to read possive.") - - - -/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, "You use the pregnancy test, after a pause one pink line lights up on the display, reading negative.") + to_chat(user, "You use the pregnancy test, the display reads positive!") + + +/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, "You use the pregnancy test, the display reads positive!") + else + force(user) \ No newline at end of file diff --git a/hyperstation/icons/obj/pregnancytest.dmi b/hyperstation/icons/obj/pregnancytest.dmi index d7563cad..69bb817d 100644 Binary files a/hyperstation/icons/obj/pregnancytest.dmi and b/hyperstation/icons/obj/pregnancytest.dmi differ diff --git a/modular_citadel/code/modules/arousal/arousal.dm b/modular_citadel/code/modules/arousal/arousal.dm index 27f7576e..58db9c4e 100644 --- a/modular_citadel/code/modules/arousal/arousal.dm +++ b/modular_citadel/code/modules/arousal/arousal.dm @@ -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 @@ "You have climaxed with someone[spillage ? ", spilling out of them":""], using your [G.name].") 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 @@ "You have climaxed inside someone, your [G.name] spilling nothing.") 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, "You cannot do this alone.") return diff --git a/modular_citadel/code/modules/arousal/organs/genitals.dm b/modular_citadel/code/modules/arousal/organs/genitals.dm index 3abe7ecb..5b4f0929 100644 --- a/modular_citadel/code/modules/arousal/organs/genitals.dm +++ b/modular_citadel/code/modules/arousal/organs/genitals.dm @@ -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) diff --git a/modular_citadel/code/modules/arousal/organs/womb.dm b/modular_citadel/code/modules/arousal/organs/womb.dm index 3f190b72..c8dbfed0 100644 --- a/modular_citadel/code/modules/arousal/organs/womb.dm +++ b/modular_citadel/code/modules/arousal/organs/womb.dm @@ -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)) diff --git a/modular_citadel/code/modules/client/preferences_savefile.dm b/modular_citadel/code/modules/client/preferences_savefile.dm index c3cbf791..43527174 100644 --- a/modular_citadel/code/modules/client/preferences_savefile.dm +++ b/modular_citadel/code/modules/client/preferences_savefile.dm @@ -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"])