From 7c3027a358639f5b4816659b90f71ea17f4b3760 Mon Sep 17 00:00:00 2001 From: Joker66613 Date: Wed, 28 Feb 2024 15:59:54 +0100 Subject: [PATCH 1/3] =?UTF-8?q?Po=C5=82owa?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- aquila/aquila.dm | 1 + aquila/code/__DEFINES/atmospherics.dm | 5 ++ aquila/code/__DEFINES/reactions.dm | 1 + aquila/code/datums/components/rot.dm | 66 +++++++++++++++++++ .../modules/atmospherics/auxgm/gas_types.dm | 7 ++ .../atmospherics/gasmixtures/reactions.dm | 24 +++++++ .../effects/decals/cleanable/humans.dm | 2 +- .../atmospherics/machinery/airalarm.dm | 4 ++ 8 files changed, 109 insertions(+), 1 deletion(-) create mode 100644 aquila/code/__DEFINES/atmospherics.dm create mode 100644 aquila/code/__DEFINES/reactions.dm create mode 100644 aquila/code/datums/components/rot.dm create mode 100644 aquila/code/modules/atmospherics/auxgm/gas_types.dm create mode 100644 aquila/code/modules/atmospherics/gasmixtures/reactions.dm diff --git a/aquila/aquila.dm b/aquila/aquila.dm index 637e33bc638..0b7b6626bf9 100644 --- a/aquila/aquila.dm +++ b/aquila/aquila.dm @@ -18,6 +18,7 @@ #include "code\controllers\subsystem\vote.dm" #include "code\datum\wires\wires_jukebox.dm" #include "code\datums\components\nanites.dm" +#include "code\datums\components\rot.dm" #include "code\datums\diseases\transformation.dm" #include "code\datums\ai_laws.dm" #include "code\datums\dna.dm" diff --git a/aquila/code/__DEFINES/atmospherics.dm b/aquila/code/__DEFINES/atmospherics.dm new file mode 100644 index 00000000000..6202bd15564 --- /dev/null +++ b/aquila/code/__DEFINES/atmospherics.dm @@ -0,0 +1,5 @@ +#define GAS_MIASMA "miasma" + +//ROT MIASMA +#define MIASMA_CORPSE_MOLES 0.02 +#define MIASMA_GIBS_MOLES 0.005 diff --git a/aquila/code/__DEFINES/reactions.dm b/aquila/code/__DEFINES/reactions.dm new file mode 100644 index 00000000000..e5aacf6fcc7 --- /dev/null +++ b/aquila/code/__DEFINES/reactions.dm @@ -0,0 +1 @@ +#define MIASMA_RESEARCH_AMOUNT 40 diff --git a/aquila/code/datums/components/rot.dm b/aquila/code/datums/components/rot.dm new file mode 100644 index 00000000000..cb195ea0f83 --- /dev/null +++ b/aquila/code/datums/components/rot.dm @@ -0,0 +1,66 @@ +/datum/component/rot + var/amount = 1 + +/datum/component/rot/Initialize(new_amount) + if(!isatom(parent)) + return COMPONENT_INCOMPATIBLE + + if(new_amount) + amount = new_amount + + START_PROCESSING(SSprocessing, src) + +/datum/component/rot/Destroy() + STOP_PROCESSING(SSprocessing, src) + return ..() + +/datum/component/rot/process(delta_time) + var/atom/A = parent + + var/turf/open/T = get_turf(A) + if(!istype(T) || T.return_air().return_pressure() > (WARNING_HIGH_PRESSURE - 10)) + return + + var/datum/gas_mixture/stank = new + stank.set_moles(GAS_MIASMA, amount * delta_time) + stank.set_temperature(BODYTEMP_NORMAL) // otherwise we have gas below 2.7K which will break our lag generator + T.assume_air(stank) + T.air_update_turf() + +/datum/component/rot/corpse + amount = MIASMA_CORPSE_MOLES + +/datum/component/rot/corpse/Initialize() + if(!iscarbon(parent)) + return COMPONENT_INCOMPATIBLE + . = ..() + +/datum/component/rot/corpse/process() + var/mob/living/carbon/C = parent + if(C == null) //can't delete what doesnt exist + return + + if(C.stat != DEAD) + qdel(src) + return + + // Wait a bit before decaying + if(world.time - C.timeofdeath < 2 MINUTES) + return + + // Properly stored corpses shouldn't create miasma + if(istype(C.loc, /obj/structure/closet/crate/coffin)|| istype(C.loc, /obj/structure/closet/body_bag) || istype(C.loc, /obj/structure/bodycontainer)) + return + + // No decay if formaldehyde in corpse or when the corpse is charred + if(C.reagents.has_reagent(/datum/reagent/toxin/formaldehyde, 15) || HAS_TRAIT(C, TRAIT_HUSK)) + return + + // Also no decay if corpse chilled or not organic/undead + if(C.bodytemperature <= T0C-10 || (!(MOB_ORGANIC in C.mob_biotypes) && !(MOB_UNDEAD in C.mob_biotypes))) + return + + ..() + +/datum/component/rot/gibs + amount = MIASMA_GIBS_MOLES diff --git a/aquila/code/modules/atmospherics/auxgm/gas_types.dm b/aquila/code/modules/atmospherics/auxgm/gas_types.dm new file mode 100644 index 00000000000..698a6e402ae --- /dev/null +++ b/aquila/code/modules/atmospherics/auxgm/gas_types.dm @@ -0,0 +1,7 @@ +/datum/gas/miasma + id = GAS_MIASMA + specific_heat = 20 + fusion_power = 50 + name = "Miasma" + gas_overlay = "miasma" + moles_visible = MOLES_GAS_VISIBLE * 60 diff --git a/aquila/code/modules/atmospherics/gasmixtures/reactions.dm b/aquila/code/modules/atmospherics/gasmixtures/reactions.dm new file mode 100644 index 00000000000..2dd1a15c39b --- /dev/null +++ b/aquila/code/modules/atmospherics/gasmixtures/reactions.dm @@ -0,0 +1,24 @@ +/datum/gas_reaction/miaster //dry heat sterilization: clears out pathogens in the air + priority = -10 //after all the heating from fires etc. is done + name = "Dry Heat Sterilization" + id = "sterilization" + +/datum/gas_reaction/miaster/init_reqs() + min_requirements = list( + "TEMP" = FIRE_MINIMUM_TEMPERATURE_TO_EXIST+70, + GAS_MIASMA = MINIMUM_MOLE_COUNT + ) + +/datum/gas_reaction/miaster/react(datum/gas_mixture/air, datum/holder) + // As the name says it, it needs to be dry + if(air.get_moles(GAS_H2O)/air.total_moles() > 0.1) + return + + //Replace miasma with oxygen + var/cleaned_air = min(air.get_moles(GAS_MIASMA), 20 + (air.return_temperature() - FIRE_MINIMUM_TEMPERATURE_TO_EXIST - 70) / 20) + air.adjust_moles(GAS_MIASMA, -cleaned_air) + air.adjust_moles(GAS_O2, cleaned_air) + + //Possibly burning a bit of organic matter through maillard reaction, so a *tiny* bit more heat would be understandable + air.set_temperature(air.return_temperature() + cleaned_air * 0.002) + SSresearch.science_tech.add_point_type(TECHWEB_POINT_TYPE_DEFAULT, cleaned_air*MIASMA_RESEARCH_AMOUNT)//Turns out the burning of miasma is kinda interesting to scientists diff --git a/code/game/objects/effects/decals/cleanable/humans.dm b/code/game/objects/effects/decals/cleanable/humans.dm index 7af87f03f32..927cdbc8033 100644 --- a/code/game/objects/effects/decals/cleanable/humans.dm +++ b/code/game/objects/effects/decals/cleanable/humans.dm @@ -73,7 +73,7 @@ /obj/effect/decal/cleanable/blood/gibs/Initialize(mapload, list/datum/disease/diseases) . = ..() name = "rotten [name]" - //AddComponent(/datum/component/rot/gibs) + AddComponent(/datum/component/rot/gibs)//AQ EDIT reagents.add_reagent(/datum/reagent/liquidgibs, 5) RegisterSignal(src, COMSIG_MOVABLE_PIPE_EJECTING, PROC_REF(on_pipe_eject)) diff --git a/code/modules/atmospherics/machinery/airalarm.dm b/code/modules/atmospherics/machinery/airalarm.dm index 2637c2d9825..dce99612d5e 100644 --- a/code/modules/atmospherics/machinery/airalarm.dm +++ b/code/modules/atmospherics/machinery/airalarm.dm @@ -93,6 +93,7 @@ GAS_O2 = new/datum/tlv(16, 19, 40, 50), // Partial pressure, kpa GAS_N2 = new/datum/tlv(-1, -1, 1000, 1000), GAS_CO2 = new/datum/tlv(-1, -1, 5, 10), + GAS_MIASMA = new/datum/tlv/(-1, -1, 15, 30),//AQ EDIT GAS_PLASMA = new/datum/tlv/dangerous, GAS_NITROUS = new/datum/tlv/dangerous, GAS_BZ = new/datum/tlv/dangerous, @@ -113,6 +114,7 @@ GAS_O2 = new/datum/tlv/no_checks, GAS_N2 = new/datum/tlv/no_checks, GAS_CO2 = new/datum/tlv/no_checks, + GAS_MIASMA = new/datum/tlv/no_checks,//AQ EDIT GAS_PLASMA = new/datum/tlv/no_checks, GAS_NITROUS = new/datum/tlv/no_checks, GAS_BZ = new/datum/tlv/no_checks, @@ -133,6 +135,7 @@ GAS_O2 = new/datum/tlv(16, 19, 135, 140), // Partial pressure, kpa GAS_N2 = new/datum/tlv(-1, -1, 1000, 1000), GAS_CO2 = new/datum/tlv(-1, -1, 5, 10), + GAS_MIASMA = new/datum/tlv/(-1, -1, 2, 5),//AQ EDIT GAS_PLASMA = new/datum/tlv/dangerous, GAS_NITROUS = new/datum/tlv/dangerous, GAS_BZ = new/datum/tlv/dangerous, @@ -537,6 +540,7 @@ "power" = 1, "set_filters" = list( GAS_CO2, + GAS_MIASMA,//AQ EDIT GAS_PLASMA, GAS_H2O, GAS_HYPERNOB, From 383ef4f14820d94250c257299132f7747041eb48 Mon Sep 17 00:00:00 2001 From: Joker66613 Date: Wed, 28 Feb 2024 16:33:26 +0100 Subject: [PATCH 2/3] done --- .../machinery/portable/canister.dm | 7 +++ aquila/code/modules/hydroponics/grown/misc.dm | 32 +++++++++++++ aquila/code/modules/mob/living/carbon/lide.dm | 41 ++++++++++++++++ .../components/unary_devices/thermomachine.dm | 2 +- .../machinery/portable/canister.dm | 1 + code/modules/cargo/exports/large_objects.dm | 1 + code/modules/hydroponics/grown/misc.dm | 2 +- code/modules/mob/living/carbon/life.dm | 1 + .../mob/living/simple_animal/bot/atmosbot.dm | 4 +- .../loot/alien_artifact.dm | 1 + code/modules/surgery/organs/lungs.dm | 48 +++++++++++++++++++ 11 files changed, 137 insertions(+), 3 deletions(-) create mode 100644 aquila/code/modules/atmospherics/machinery/portable/canister.dm create mode 100644 aquila/code/modules/hydroponics/grown/misc.dm create mode 100644 aquila/code/modules/mob/living/carbon/lide.dm diff --git a/aquila/code/modules/atmospherics/machinery/portable/canister.dm b/aquila/code/modules/atmospherics/machinery/portable/canister.dm new file mode 100644 index 00000000000..fce68b0adcc --- /dev/null +++ b/aquila/code/modules/atmospherics/machinery/portable/canister.dm @@ -0,0 +1,7 @@ +/obj/machinery/portable_atmospherics/canister/miasma + name = "miasma canister" + desc = "Miasma. Makes you wish your nose was blocked." + gas_type = GAS_MIASMA + filled = 1 + greyscale_config = /datum/greyscale_config/canister/double_stripe + greyscale_colors = "#009823#f7d5d3" diff --git a/aquila/code/modules/hydroponics/grown/misc.dm b/aquila/code/modules/hydroponics/grown/misc.dm new file mode 100644 index 00000000000..b3f979bcd75 --- /dev/null +++ b/aquila/code/modules/hydroponics/grown/misc.dm @@ -0,0 +1,32 @@ +// Corpse flower +/obj/item/seeds/starthistle/corpse_flower + name = "pack of corpse flower seeds" + desc = "A species of plant that emits a horrible odor. The odor stops being produced in difficult atmospheric conditions." + icon_state = "seed-corpse-flower" + species = "corpse-flower" + plantname = "Corpse flower" + production = 2 + growing_icon = 'icons/obj/hydroponics/growing_flowers.dmi' + genes = list() + mutatelist = list() + +/obj/item/seeds/starthistle/corpse_flower/pre_attack(obj/machinery/hydroponics/I) + if(istype(I, /obj/machinery/hydroponics)) + if(!I.myseed) + START_PROCESSING(SSobj, src) + return ..() + +/obj/item/seeds/starthistle/corpse_flower/process(delta_time) + var/obj/machinery/hydroponics/parent = loc + if(parent.age < maturation) // Start a little before it blooms + return + + var/turf/open/T = get_turf(parent) + if(abs(ONE_ATMOSPHERE - T.return_air().return_pressure()) > (potency/10 + 10)) // clouds can begin showing at around 50-60 potency in standard atmos + return + + var/datum/gas_mixture/stank = new + stank.set_moles(GAS_MIASMA, (yield + 6)*3.5*MIASMA_CORPSE_MOLES*delta_time) // this process is only being called about 2/7 as much as corpses so this is 12-32 times a corpses + stank.set_temperature(T20C) // without this the room would eventually freeze and miasma mining would be easier + T.assume_air(stank) + T.air_update_turf() diff --git a/aquila/code/modules/mob/living/carbon/lide.dm b/aquila/code/modules/mob/living/carbon/lide.dm new file mode 100644 index 00000000000..8c03ab24b2f --- /dev/null +++ b/aquila/code/modules/mob/living/carbon/lide.dm @@ -0,0 +1,41 @@ +//MIASMA + if(breath.get_moles(GAS_MIASMA)) + var/miasma_partialpressure = (breath.get_moles(GAS_MIASMA)/breath.total_moles())*breath_pressure + + if(prob(1 * miasma_partialpressure)) + var/datum/disease/advance/miasma_disease = new /datum/disease/advance/random(2,3) + miasma_disease.name = "Unknown" + ForceContractDisease(miasma_disease, TRUE, TRUE) + + //Miasma side effects + switch(miasma_partialpressure) + if(0.25 to 5) + // At lower pp, give out a little warning + SEND_SIGNAL(src, COMSIG_CLEAR_MOOD_EVENT, "smell") + if(prob(5)) + to_chat(src, "There is an unpleasant smell in the air.") + if(5 to 20) + //At somewhat higher pp, warning becomes more obvious + if(prob(15)) + to_chat(src, "You smell something horribly decayed inside this room.") + SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "smell", /datum/mood_event/disgust/bad_smell) + if(15 to 30) + //Small chance to vomit. By now, people have internals on anyway + if(prob(5)) + to_chat(src, "The stench of rotting carcasses is unbearable!") + SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "smell", /datum/mood_event/disgust/nauseating_stench) + vomit() + if(30 to INFINITY) + //Higher chance to vomit. Let the horror start + if(prob(25)) + to_chat(src, "The stench of rotting carcasses is unbearable!") + SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "smell", /datum/mood_event/disgust/nauseating_stench) + vomit() + else + SEND_SIGNAL(src, COMSIG_CLEAR_MOOD_EVENT, "smell") + + + //Clear all moods if no miasma at all + else + SEND_SIGNAL(src, COMSIG_CLEAR_MOOD_EVENT, "smell") + diff --git a/code/modules/atmospherics/machinery/components/unary_devices/thermomachine.dm b/code/modules/atmospherics/machinery/components/unary_devices/thermomachine.dm index cc41313cbc3..0dc6221e5f9 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/thermomachine.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/thermomachine.dm @@ -255,7 +255,7 @@ /obj/machinery/atmospherics/components/unary/thermomachine/freezer/on/coldroom/Initialize(mapload) . = ..() - target_temperature = T0C-20 + target_temperature = T0C-20//zatrzymuje Miasme /obj/machinery/atmospherics/components/unary/thermomachine/heater icon_state = "heater" diff --git a/code/modules/atmospherics/machinery/portable/canister.dm b/code/modules/atmospherics/machinery/portable/canister.dm index 70b4ce40fa7..0f4d79eb8b4 100644 --- a/code/modules/atmospherics/machinery/portable/canister.dm +++ b/code/modules/atmospherics/machinery/portable/canister.dm @@ -54,6 +54,7 @@ "stimulum" = /obj/machinery/portable_atmospherics/canister/stimulum, "pluoxium" = /obj/machinery/portable_atmospherics/canister/pluoxium, "caution" = /obj/machinery/portable_atmospherics/canister, + "miasma" = /obj/machinery/portable_atmospherics/canister/miasma//AQ EDIT "nucleium" = /obj/machinery/portable_atmospherics/canister/nucleium, //NSV13 "constricted plasma" = /obj/machinery/portable_atmospherics/canister/constricted_plasma, //NSV13 ) diff --git a/code/modules/cargo/exports/large_objects.dm b/code/modules/cargo/exports/large_objects.dm index a97e72efee7..e9258118e42 100644 --- a/code/modules/cargo/exports/large_objects.dm +++ b/code/modules/cargo/exports/large_objects.dm @@ -144,6 +144,7 @@ worth += C.air_contents.get_moles(GAS_BZ)*4 worth += C.air_contents.get_moles(GAS_STIMULUM)*100 worth += C.air_contents.get_moles(GAS_HYPERNOB)*1000 + worth += C.air_contents.get_moles(GAS_MIASMA)*10//AQ EDIT worth += C.air_contents.get_moles(GAS_TRITIUM)*5 worth += C.air_contents.get_moles(GAS_PLUOXIUM)*5 worth += C.air_contents.get_moles(GAS_CONSTRICTED_PLASMA)*2 //NSV13 - Constricted plasma export. diff --git a/code/modules/hydroponics/grown/misc.dm b/code/modules/hydroponics/grown/misc.dm index 91992d3ee39..62bc822383f 100644 --- a/code/modules/hydroponics/grown/misc.dm +++ b/code/modules/hydroponics/grown/misc.dm @@ -14,7 +14,7 @@ growthstages = 3 growing_icon = 'icons/obj/hydroponics/growing_flowers.dmi' genes = list(/datum/plant_gene/trait/plant_type/weed_hardy) - mutatelist = list(/obj/item/seeds/galaxythistle) + mutatelist = list(/obj/item/seeds/starthistle/corpse_flower, /obj/item/seeds/galaxythistle)//AQ EDIT /obj/item/seeds/starthistle/harvest(mob/user) var/obj/machinery/hydroponics/parent = loc diff --git a/code/modules/mob/living/carbon/life.dm b/code/modules/mob/living/carbon/life.dm index ff3da41caf4..e8a8d8a57c0 100644 --- a/code/modules/mob/living/carbon/life.dm +++ b/code/modules/mob/living/carbon/life.dm @@ -49,6 +49,7 @@ if(stat == DEAD) stop_sound_channel(CHANNEL_HEARTBEAT) + LoadComponent(/datum/component/rot/corpse)//AQ EDIT //Updates the number of stored chemicals for changeling powers if(hud_used?.lingchemdisplay && !isalien(src) && mind) diff --git a/code/modules/mob/living/simple_animal/bot/atmosbot.dm b/code/modules/mob/living/simple_animal/bot/atmosbot.dm index 609be5abf0a..325b1af4867 100644 --- a/code/modules/mob/living/simple_animal/bot/atmosbot.dm +++ b/code/modules/mob/living/simple_animal/bot/atmosbot.dm @@ -15,6 +15,7 @@ #define ATMOSBOT_VENT_AIR 2 #define ATMOSBOT_SCRUB_TOXINS 3 #define ATMOSBOT_TEMPERATURE_CONTROL 4 +#define ATMOSBOT_SPRAY_MIASMA 5//AQ EDIT //Floorbot /mob/living/simple_animal/bot/atmosbot @@ -55,6 +56,7 @@ GAS_BZ = 1, GAS_CO2 = 1, GAS_HYPERNOB = 1, + GAS_MIASMA = 1,//AQ EDIT GAS_NITROUS = 1, GAS_NITRYL = 1, GAS_PLASMA = 1, @@ -196,7 +198,7 @@ if(pressure_delta > 0) var/transfer_moles = pressure_delta*environment.return_volume()/(T20C * R_IDEAL_GAS_EQUATION) if(emagged == 2) - environment.adjust_moles(GAS_CO2, transfer_moles) + environment.adjust_moles(GAS_MIASMA, transfer_moles)//AQ EDIT zamiast CO2 else environment.adjust_moles(GAS_N2, transfer_moles * 0.7885) environment.adjust_moles(GAS_O2, transfer_moles * 0.2115) diff --git a/code/modules/shuttle/super_cruise/orbital_poi_generator/loot/alien_artifact.dm b/code/modules/shuttle/super_cruise/orbital_poi_generator/loot/alien_artifact.dm index dd26bf9e873..7453a0e5ba0 100644 --- a/code/modules/shuttle/super_cruise/orbital_poi_generator/loot/alien_artifact.dm +++ b/code/modules/shuttle/super_cruise/orbital_poi_generator/loot/alien_artifact.dm @@ -397,6 +397,7 @@ GLOBAL_LIST_EMPTY(destabliization_exits) var/static/list/valid_outputs = list( /datum/gas/bz = 3, /datum/gas/hypernoblium = 1, + /datum/gas/miasma = 3,//AQ /datum/gas/plasma = 3, /datum/gas/tritium = 2, /datum/gas/nitryl = 1 diff --git a/code/modules/surgery/organs/lungs.dm b/code/modules/surgery/organs/lungs.dm index 989cbd49ed5..db7f464f8ab 100644 --- a/code/modules/surgery/organs/lungs.dm +++ b/code/modules/surgery/organs/lungs.dm @@ -271,6 +271,54 @@ H.reagents.add_reagent(/datum/reagent/stimulum, max(0, 5 - existing)) breath.adjust_moles(GAS_STIMULUM, -gas_breathed) + // Miasma - AQ + if (breath.get_moles(GAS_MIASMA)) + var/miasma_pp = PP(breath,GAS_MIASMA) + if(miasma_pp > MINIMUM_MOLES_DELTA_TO_MOVE) + + //Miasma sickness + if(prob(0.05 * miasma_pp)) + var/datum/disease/advance/miasma_disease = new /datum/disease/advance/random(TRUE, 2, 3) + miasma_disease.name = "Unknown" + miasma_disease.try_infect(owner) + + // Miasma side effects + switch(miasma_pp) + if(1 to 5) + // At lower pp, give out a little warning + SEND_SIGNAL(owner, COMSIG_CLEAR_MOOD_EVENT, "smell") + if(prob(5)) + to_chat(owner, "There is an unpleasant smell in the air.") + if(6 to 15) + //At somewhat higher pp, warning becomes more obvious + if(prob(15)) + to_chat(owner, "You smell something horribly decayed inside this room.") + SEND_SIGNAL(owner, COMSIG_ADD_MOOD_EVENT, "smell", /datum/mood_event/disgust/bad_smell) + if(16 to 30) + //Small chance to vomit. By now, people have internals on anyway + if(prob(5)) + to_chat(owner, "The stench of rotting carcasses is unbearable!") + SEND_SIGNAL(owner, COMSIG_ADD_MOOD_EVENT, "smell", /datum/mood_event/disgust/nauseating_stench) + owner.vomit() + if(31 to INFINITY) + //Higher chance to vomit. Let the horror start + if(prob(15)) + to_chat(owner, "The stench of rotting carcasses is unbearable!") + SEND_SIGNAL(owner, COMSIG_ADD_MOOD_EVENT, "smell", /datum/mood_event/disgust/nauseating_stench) + owner.vomit() + else + SEND_SIGNAL(owner, COMSIG_CLEAR_MOOD_EVENT, "smell") + + // In a full miasma atmosphere with 101.34 pKa, about 10 disgust per breath, is pretty low compared to threshholds + // Then again, this is a purely hypothetical scenario and hardly reachable + owner.adjust_disgust(0.1 * miasma_pp) + + breath.adjust_moles(GAS_MIASMA, -gas_breathed) + + // Clear out moods when no miasma at all + else + SEND_SIGNAL(owner, COMSIG_CLEAR_MOOD_EVENT, "smell") + // Nucleium - NSV 13 var/nucleium_pp = PP(breath, GAS_NUCLEIUM) switch(nucleium_pp) From 63e5d3b8d8db6b7e8678b52ed9fcfe256bb0d778 Mon Sep 17 00:00:00 2001 From: smorgli Date: Wed, 28 Feb 2024 18:40:29 +0100 Subject: [PATCH 3/3] joker boze --- aquila/aquila.dm | 3 ++ aquila/code/__DEFINES/atmospherics.dm | 5 --- aquila/code/modules/mob/living/carbon/lide.dm | 41 ------------------- code/__DEFINES/atmospherics.dm | 6 +++ .../machinery/portable/canister.dm | 4 +- code/modules/mob/living/carbon/life.dm | 40 ++++++++++++++++++ 6 files changed, 51 insertions(+), 48 deletions(-) delete mode 100644 aquila/code/__DEFINES/atmospherics.dm delete mode 100644 aquila/code/modules/mob/living/carbon/lide.dm diff --git a/aquila/aquila.dm b/aquila/aquila.dm index 0b7b6626bf9..64f23d3fec7 100644 --- a/aquila/aquila.dm +++ b/aquila/aquila.dm @@ -86,6 +86,8 @@ #include "code\modules\antagonists\monkey\monkey.dm" #include "code\modules\antagonists\morph\morph.dm" #include "code\modules\antagonists\role_preference\role_monkey.dm" +#include "code\modules\atmospherics\auxgm\gas_types.dm" +#include "code\modules\atmospherics\machinery\portable\canister.dm" #include "code\modules\cargo\packs.dm" #include "code\modules\cargo\exports\large_objects.dm" #include "code\modules\client\verbs\input_box.dm" @@ -104,6 +106,7 @@ #include "code\modules\food_and_drinks\drinks\drinks.dm" #include "code\modules\food_and_drinks\food\snacks_pie.dm" #include "code\modules\food_and_drinks\recipes\drinks_recipes.dm" +#include "code\modules\hydroponics\grown\misc.dm" #include "code\modules\metacoin\metacoin.dm" #include "code\modules\mining\equipment\mineral_scanner.dm" #include "code\modules\mining\machine_bluespaceminer.dm" diff --git a/aquila/code/__DEFINES/atmospherics.dm b/aquila/code/__DEFINES/atmospherics.dm deleted file mode 100644 index 6202bd15564..00000000000 --- a/aquila/code/__DEFINES/atmospherics.dm +++ /dev/null @@ -1,5 +0,0 @@ -#define GAS_MIASMA "miasma" - -//ROT MIASMA -#define MIASMA_CORPSE_MOLES 0.02 -#define MIASMA_GIBS_MOLES 0.005 diff --git a/aquila/code/modules/mob/living/carbon/lide.dm b/aquila/code/modules/mob/living/carbon/lide.dm deleted file mode 100644 index 8c03ab24b2f..00000000000 --- a/aquila/code/modules/mob/living/carbon/lide.dm +++ /dev/null @@ -1,41 +0,0 @@ -//MIASMA - if(breath.get_moles(GAS_MIASMA)) - var/miasma_partialpressure = (breath.get_moles(GAS_MIASMA)/breath.total_moles())*breath_pressure - - if(prob(1 * miasma_partialpressure)) - var/datum/disease/advance/miasma_disease = new /datum/disease/advance/random(2,3) - miasma_disease.name = "Unknown" - ForceContractDisease(miasma_disease, TRUE, TRUE) - - //Miasma side effects - switch(miasma_partialpressure) - if(0.25 to 5) - // At lower pp, give out a little warning - SEND_SIGNAL(src, COMSIG_CLEAR_MOOD_EVENT, "smell") - if(prob(5)) - to_chat(src, "There is an unpleasant smell in the air.") - if(5 to 20) - //At somewhat higher pp, warning becomes more obvious - if(prob(15)) - to_chat(src, "You smell something horribly decayed inside this room.") - SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "smell", /datum/mood_event/disgust/bad_smell) - if(15 to 30) - //Small chance to vomit. By now, people have internals on anyway - if(prob(5)) - to_chat(src, "The stench of rotting carcasses is unbearable!") - SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "smell", /datum/mood_event/disgust/nauseating_stench) - vomit() - if(30 to INFINITY) - //Higher chance to vomit. Let the horror start - if(prob(25)) - to_chat(src, "The stench of rotting carcasses is unbearable!") - SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "smell", /datum/mood_event/disgust/nauseating_stench) - vomit() - else - SEND_SIGNAL(src, COMSIG_CLEAR_MOOD_EVENT, "smell") - - - //Clear all moods if no miasma at all - else - SEND_SIGNAL(src, COMSIG_CLEAR_MOOD_EVENT, "smell") - diff --git a/code/__DEFINES/atmospherics.dm b/code/__DEFINES/atmospherics.dm index 72ed8f4002c..5b0b2185d88 100644 --- a/code/__DEFINES/atmospherics.dm +++ b/code/__DEFINES/atmospherics.dm @@ -281,6 +281,7 @@ #define GAS_PLUOXIUM "pluox" #define GAS_CONSTRICTED_PLASMA "constricted_plasma" //NSV13 #define GAS_NUCLEIUM "nucleium" //NSV13 +#define GAS_MIASMA "miasma" #define GAS_FLAG_DANGEROUS (1<<0) #define GAS_FLAG_BREATH_PROC (1<<1) @@ -321,6 +322,11 @@ GLOBAL_LIST_INIT(pipe_paint_colors, sortList(list( "yellow" = rgb(255,198,0) ))) +//ROT MIASMA AQ EDIT START +#define MIASMA_CORPSE_MOLES 0.02 +#define MIASMA_GIBS_MOLES 0.005 +//AQ EDIT END + //PIPENET UPDATE STATUS #define PIPENET_UPDATE_STATUS_DORMANT 0 #define PIPENET_UPDATE_STATUS_REACT_NEEDED 1 diff --git a/code/modules/atmospherics/machinery/portable/canister.dm b/code/modules/atmospherics/machinery/portable/canister.dm index 0f4d79eb8b4..03041ae5fea 100644 --- a/code/modules/atmospherics/machinery/portable/canister.dm +++ b/code/modules/atmospherics/machinery/portable/canister.dm @@ -54,9 +54,9 @@ "stimulum" = /obj/machinery/portable_atmospherics/canister/stimulum, "pluoxium" = /obj/machinery/portable_atmospherics/canister/pluoxium, "caution" = /obj/machinery/portable_atmospherics/canister, - "miasma" = /obj/machinery/portable_atmospherics/canister/miasma//AQ EDIT + "miasma" = /obj/machinery/portable_atmospherics/canister/miasma,//AQ EDIT "nucleium" = /obj/machinery/portable_atmospherics/canister/nucleium, //NSV13 - "constricted plasma" = /obj/machinery/portable_atmospherics/canister/constricted_plasma, //NSV13 + "constricted plasma" = /obj/machinery/portable_atmospherics/canister/constricted_plasma //NSV13 ) /obj/machinery/portable_atmospherics/canister/interact(mob/user) diff --git a/code/modules/mob/living/carbon/life.dm b/code/modules/mob/living/carbon/life.dm index e8a8d8a57c0..61df0935466 100644 --- a/code/modules/mob/living/carbon/life.dm +++ b/code/modules/mob/living/carbon/life.dm @@ -268,6 +268,46 @@ var/nitryl_partialpressure = (breath.get_moles(GAS_NITRYL)/breath.total_moles())*breath_pressure adjustFireLoss(nitryl_partialpressure/4) + //MIASMA AQ EDIT START + if(breath.get_moles(GAS_MIASMA)) + var/miasma_partialpressure = (breath.get_moles(GAS_MIASMA)/breath.total_moles())*breath_pressure + + if(prob(1 * miasma_partialpressure)) + var/datum/disease/advance/miasma_disease = new /datum/disease/advance/random(2,3) + miasma_disease.name = "Unknown" + ForceContractDisease(miasma_disease, TRUE, TRUE) + + //Miasma side effects + switch(miasma_partialpressure) + if(0.25 to 5) + // At lower pp, give out a little warning + SEND_SIGNAL(src, COMSIG_CLEAR_MOOD_EVENT, "smell") + if(prob(5)) + to_chat(src, "There is an unpleasant smell in the air.") + if(5 to 20) + //At somewhat higher pp, warning becomes more obvious + if(prob(15)) + to_chat(src, "You smell something horribly decayed inside this room.") + SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "smell", /datum/mood_event/disgust/bad_smell) + if(15 to 30) + //Small chance to vomit. By now, people have internals on anyway + if(prob(5)) + to_chat(src, "The stench of rotting carcasses is unbearable!") + SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "smell", /datum/mood_event/disgust/nauseating_stench) + vomit() + if(30 to INFINITY) + //Higher chance to vomit. Let the horror start + if(prob(25)) + to_chat(src, "The stench of rotting carcasses is unbearable!") + SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "smell", /datum/mood_event/disgust/nauseating_stench) + vomit() + else + SEND_SIGNAL(src, COMSIG_CLEAR_MOOD_EVENT, "smell") + //Clear all moods if no miasma at all + else + SEND_SIGNAL(src, COMSIG_CLEAR_MOOD_EVENT, "smell") + //AQ EDIT END + //BREATH TEMPERATURE handle_breath_temperature(breath)