diff --git a/code/__DEFINES/citadel_defines.dm b/code/__DEFINES/citadel_defines.dm index 81b12c46e3..6e21fbe06a 100644 --- a/code/__DEFINES/citadel_defines.dm +++ b/code/__DEFINES/citadel_defines.dm @@ -40,7 +40,7 @@ #define BALLS_SACK_SIZE_DEF 8 #define BALLS_SACK_SIZE_MAX 40 -#define CUM_RATE 5 +#define CUM_RATE 0.035 #define CUM_RATE_MULT 1 #define CUM_EFFICIENCY 1//amount of nutrition required per life() diff --git a/code/datums/helper_datums/teleport.dm b/code/datums/helper_datums/teleport.dm index 6462a1998a..4d1986cccf 100644 --- a/code/datums/helper_datums/teleport.dm +++ b/code/datums/helper_datums/teleport.dm @@ -8,7 +8,7 @@ // no_effects: disable the default effectin/effectout of sparks // forceMove: if false, teleport will use Move() proc (dense objects will prevent teleportation) // forced: whether or not to ignore no_teleport -/proc/do_teleport(atom/movable/teleatom, atom/destination, precision=null, forceMove = FALSE, datum/effect_system/effectin=null, datum/effect_system/effectout=null, asoundin=null, asoundout=null, no_effects=FALSE, channel=TELEPORT_CHANNEL_BLUESPACE, forced = FALSE) +/proc/do_teleport(atom/movable/teleatom, atom/destination, precision=null, forceMove = TRUE, datum/effect_system/effectin=null, datum/effect_system/effectout=null, asoundin=null, asoundout=null, no_effects=FALSE, channel=TELEPORT_CHANNEL_BLUESPACE, forced = FALSE) // teleporting most effects just deletes them var/static/list/delete_atoms = typecacheof(list( /obj/effect, diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index f7d10bfb7b..84f0df3cc7 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -116,7 +116,7 @@ // vision_distance (optional) define how many tiles away the message can be seen. // ignored_mob (optional) doesn't show any message to a given mob if TRUE. -/atom/proc/visible_message(message, self_message, blind_message, vision_distance, ignored_mob) +/atom/proc/visible_message(message, self_message, blind_message, vision_distance, ignored_mob, no_ghosts = FALSE) var/turf/T = get_turf(src) if(!T) return @@ -129,6 +129,8 @@ if(M == ignored_mob) continue var/msg = message + if(isobserver(M) && no_ghosts) + continue if(M == src) //the src always see the main message or self message if(self_message) msg = self_message diff --git a/html/changelogs/AutoChangeLog-pr-9045.yml b/html/changelogs/AutoChangeLog-pr-9045.yml new file mode 100644 index 0000000000..8917707ae3 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-9045.yml @@ -0,0 +1,8 @@ +author: "CameronWoof" +delete-after: True +changes: + - tweak: "Fluid-producing sexual organs no longer start full" + - tweak: "Sexual organ fluid capacity decreased from 50 to 15" + - tweak: "Sexual organ production rate decreased from 5u to 0.035u per two seconds." + - tweak: "Sexual fluid decals no longer contain reagents" + - tweak: "Sexual fluids cannot by synthesized (e.g., by the Odysseus)" diff --git a/html/changelogs/AutoChangeLog-pr-9050.yml b/html/changelogs/AutoChangeLog-pr-9050.yml new file mode 100644 index 0000000000..3b12a12f17 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-9050.yml @@ -0,0 +1,4 @@ +author: "Ghommie" +delete-after: True +changes: + - bugfix: "fixes a few bad touchs on combat mode pushing." diff --git a/modular_citadel/code/modules/arousal/organs/breasts.dm b/modular_citadel/code/modules/arousal/organs/breasts.dm index 9602c8edad..3df2218766 100644 --- a/modular_citadel/code/modules/arousal/organs/breasts.dm +++ b/modular_citadel/code/modules/arousal/organs/breasts.dm @@ -21,10 +21,6 @@ can_climax = TRUE fluid_transfer_factor = 0.5 -/obj/item/organ/genital/breasts/Initialize() - . = ..() - reagents.add_reagent(fluid_id, fluid_max_volume) - /obj/item/organ/genital/breasts/on_life() if(QDELETED(src)) return @@ -32,6 +28,14 @@ return reagents.maximum_volume = fluid_max_volume if(fluid_id && producing) + if(reagents.total_volume == 0) // Apparently, 0.015 gets rounded down to zero and no reagents are created if we don't start it with 0.1 in the tank. + fluid_rate = 0.1 + else + fluid_rate = CUM_RATE + if(reagents.total_volume >= 5) + fluid_mult = 0.5 + else + fluid_mult = 1 generate_milk() /obj/item/organ/genital/breasts/proc/generate_milk() diff --git a/modular_citadel/code/modules/arousal/organs/genitals.dm b/modular_citadel/code/modules/arousal/organs/genitals.dm index de3a75f3f1..517a657eb3 100644 --- a/modular_citadel/code/modules/arousal/organs/genitals.dm +++ b/modular_citadel/code/modules/arousal/organs/genitals.dm @@ -10,7 +10,7 @@ var/fluid_transfer_factor = 0.0 //How much would a partner get in them if they climax using this? var/size = 2 //can vary between num or text, just used in icon_state strings var/fluid_id = null - var/fluid_max_volume = 50 + var/fluid_max_volume = 15 var/fluid_efficiency = 1 var/fluid_rate = 1 var/fluid_mult = 1 diff --git a/modular_citadel/code/modules/arousal/organs/testicles.dm b/modular_citadel/code/modules/arousal/organs/testicles.dm index 1e6b4d62d4..f4ef4b5064 100644 --- a/modular_citadel/code/modules/arousal/organs/testicles.dm +++ b/modular_citadel/code/modules/arousal/organs/testicles.dm @@ -16,14 +16,18 @@ can_climax = TRUE var/sent_full_message = TRUE //defaults to 1 since they're full to start -/obj/item/organ/genital/testicles/Initialize() - . = ..() - reagents.add_reagent(fluid_id, fluid_max_volume) - /obj/item/organ/genital/testicles/on_life() if(QDELETED(src)) return if(reagents && producing) + if(reagents.total_volume == 0) // Apparently, 0.015 gets rounded down to zero and no reagents are created if we don't start it with 0.1 in the tank. + fluid_rate = 0.1 + else + fluid_rate = CUM_RATE + if(reagents.total_volume >= 5) + fluid_mult = 0.5 + else + fluid_mult = 1 generate_cum() /obj/item/organ/genital/testicles/proc/generate_cum() diff --git a/modular_citadel/code/modules/arousal/organs/womb.dm b/modular_citadel/code/modules/arousal/organs/womb.dm index 686d9059a0..3f190b72ac 100644 --- a/modular_citadel/code/modules/arousal/organs/womb.dm +++ b/modular_citadel/code/modules/arousal/organs/womb.dm @@ -9,14 +9,18 @@ fluid_id = "femcum" producing = TRUE -/obj/item/organ/genital/womb/Initialize() - . = ..() - reagents.add_reagent(fluid_id, fluid_max_volume) - /obj/item/organ/genital/womb/on_life() if(QDELETED(src)) return if(reagents && producing) + if(reagents.total_volume == 0) // Apparently, 0.015 gets rounded down to zero and no reagents are created if we don't start it with 0.1 in the tank. + fluid_rate = 0.1 + else + fluid_rate = CUM_RATE + if(reagents.total_volume >= 5) + fluid_mult = 0.5 + else + fluid_mult = 1 generate_femcum() /obj/item/organ/genital/womb/proc/generate_femcum() diff --git a/modular_citadel/code/modules/mob/cit_emotes.dm b/modular_citadel/code/modules/mob/cit_emotes.dm index aff1739ae4..a34b7b0526 100644 --- a/modular_citadel/code/modules/mob/cit_emotes.dm +++ b/modular_citadel/code/modules/mob/cit_emotes.dm @@ -185,22 +185,6 @@ emote_type = EMOTE_AUDIBLE restraint_check = TRUE - - -/datum/emote/living/dab/run_emote(mob/living/user, params) - if (ishuman(user)) - var/def_zone = BODY_ZONE_CHEST - var/luck = (rand(1,100)) - if(luck >= 65) - user.adjustStaminaLoss(70) - if(luck >= 80) - def_zone = pick(BODY_ZONE_L_ARM, BODY_ZONE_R_ARM) - user.apply_damage(20, BRUTE, def_zone) - if(luck >= 95) - user.adjustBrainLoss(100) - . = ..() - - /datum/emote/living/mothsqueak key = "msqueak" key_third_person = "lets out a tiny squeak" diff --git a/modular_citadel/code/modules/mob/living/carbon/human/species.dm b/modular_citadel/code/modules/mob/living/carbon/human/species.dm index 1e86da47e1..1c7456a8d8 100644 --- a/modular_citadel/code/modules/mob/living/carbon/human/species.dm +++ b/modular_citadel/code/modules/mob/living/carbon/human/species.dm @@ -80,21 +80,23 @@ else target.Move(target_shove_turf, shove_dir) if(get_turf(target) == target_oldturf) - var/thoushallnotpass = FALSE - for(var/obj/O in target_shove_turf) - if(O.density) - shove_blocked = TRUE + if(target_shove_turf.density) + shove_blocked = TRUE + else + var/thoushallnotpass = FALSE + for(var/obj/O in target_shove_turf) if(istype(O, /obj/structure/table)) target_table = O - else + else if(!O.CanPass(src, target_shove_turf)) + shove_blocked = TRUE thoushallnotpass = TRUE - if(thoushallnotpass) - target_table = null + if(thoushallnotpass) + target_table = null if(target.is_shove_knockdown_blocked()) return - if(shove_blocked) + if(shove_blocked || target_table) var/directional_blocked = FALSE if(shove_dir in GLOB.cardinals) //Directional checks to make sure that we're not shoving through a windoor or something like that var/target_turf = get_turf(target) diff --git a/modular_citadel/code/modules/reagents/reagents/cit_reagents.dm b/modular_citadel/code/modules/reagents/reagents/cit_reagents.dm index ee8268128a..c4c1cff1e7 100644 --- a/modular_citadel/code/modules/reagents/reagents/cit_reagents.dm +++ b/modular_citadel/code/modules/reagents/reagents/cit_reagents.dm @@ -8,6 +8,7 @@ data = list("donor"=null,"viruses"=null,"donor_DNA"=null,"blood_type"=null,"resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null) reagent_state = LIQUID color = "#FFFFFF" // rgb: 255, 255, 255 + can_synth = FALSE nutriment_factor = 0.5 * REAGENTS_METABOLISM /datum/reagent/consumable/semen/reaction_turf(turf/T, reac_volume) @@ -19,7 +20,6 @@ var/obj/effect/decal/cleanable/semen/S = locate() in T if(!S) S = new(T) - S.reagents.add_reagent("semen", reac_volume) if(data["blood_DNA"]) S.add_blood_DNA(list(data["blood_DNA"] = data["blood_type"])) @@ -50,6 +50,7 @@ data = list("donor"=null,"viruses"=null,"donor_DNA"=null,"blood_type"=null,"resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null) reagent_state = LIQUID color = "#AAAAAA77" + can_synth = FALSE nutriment_factor = 0.5 * REAGENTS_METABOLISM /obj/effect/decal/cleanable/femcum @@ -82,7 +83,6 @@ var/obj/effect/decal/cleanable/femcum/S = locate() in T if(!S) S = new(T) - S.reagents.add_reagent("femcum", reac_volume) if(data["blood_DNA"]) S.add_blood_DNA(list(data["blood_DNA"] = data["blood_type"]))