diff --git a/_maps/map_files/LayeniaStation/LayeniaStation.dmm b/_maps/map_files/LayeniaStation/LayeniaStation.dmm index 82f29ea34..11651c7d7 100644 --- a/_maps/map_files/LayeniaStation/LayeniaStation.dmm +++ b/_maps/map_files/LayeniaStation/LayeniaStation.dmm @@ -15566,6 +15566,7 @@ /obj/effect/turf_decal/tile/green{ dir = 4 }, +/obj/effect/landmark/start/virologist, /turf/open/floor/plasteel/white/side{ dir = 10 }, @@ -18245,7 +18246,7 @@ }, /obj/structure/disposalpipe/segment, /obj/machinery/door/poddoor/shutters{ - id = "cargoshut2"; + id = "cargoshut3"; name = "mailroom shutters" }, /turf/open/floor/plasteel/dark{ @@ -22431,6 +22432,13 @@ /obj/effect/turf_decal/delivery, /turf/open/floor/plating, /area/maintenance/fore) +"dwt" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer1{ + name = "air scrubber" + }, +/obj/effect/landmark/start/virologist, +/turf/open/floor/plasteel/white, +/area/medical/virology) "dwF" = ( /obj/machinery/door/airlock/maintenance{ name = "Engineering Maintenance"; @@ -101213,7 +101221,7 @@ /obj/machinery/door/firedoor, /obj/effect/spawner/structure/window, /obj/machinery/door/poddoor/shutters{ - id = "cargoshut2"; + id = "cargoshut3"; name = "mailroom shutters" }, /turf/open/floor/plating, @@ -120847,7 +120855,7 @@ }, /obj/machinery/button/door{ desc = "A remote control switch for the medbay foyer."; - id = "cargoshut2"; + id = "cargoshut3"; name = "Mailroom Shutter Controls"; pixel_y = -22 }, @@ -158865,7 +158873,7 @@ /obj/effect/decal/cleanable/dirt, /obj/machinery/button/door{ desc = "A remote control switch for the medbay foyer."; - id = "cargoshut2"; + id = "cargoshut3"; name = "Mailroom Shutter Controls"; pixel_y = 26 }, @@ -268328,7 +268336,7 @@ ecI jZa wsF teT -wGF +dwt vWw kVA eRT diff --git a/_maps/map_files/generic/CentCom.dmm b/_maps/map_files/generic/CentCom.dmm index 9d03e1aae..8d51088e6 100644 --- a/_maps/map_files/generic/CentCom.dmm +++ b/_maps/map_files/generic/CentCom.dmm @@ -1081,7 +1081,7 @@ "jyr" = (/obj/structure/closet/secure_closet/freezer/meat,/obj/item/reagent_containers/food/snacks/meat/rawbacon,/obj/item/reagent_containers/food/snacks/meat/rawbacon,/obj/item/reagent_containers/food/snacks/meat/rawbacon,/obj/item/reagent_containers/food/snacks/meat/rawbacon,/obj/item/reagent_containers/food/snacks/meat/slab/killertomato,/obj/item/reagent_containers/food/snacks/meat/slab/killertomato,/obj/item/reagent_containers/food/snacks/meat/slab/killertomato,/obj/item/reagent_containers/food/snacks/meat/slab/killertomato,/obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/lizard,/obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/lizard,/obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/lizard,/obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/lizard,/obj/item/reagent_containers/food/snacks/sausage,/obj/item/reagent_containers/food/snacks/sausage,/obj/item/reagent_containers/food/snacks/meat/rawcutlet,/obj/item/reagent_containers/food/snacks/meat/rawcutlet,/obj/item/reagent_containers/food/snacks/meat/rawcutlet,/obj/item/reagent_containers/food/snacks/carpmeat,/obj/item/reagent_containers/food/snacks/carpmeat,/obj/item/reagent_containers/food/snacks/carpmeat,/obj/item/reagent_containers/food/snacks/carpmeat,/obj/effect/turf_decal/tile/neutral{dir = 1},/obj/effect/turf_decal/tile/neutral,/obj/effect/turf_decal/tile/neutral{dir = 4},/obj/effect/turf_decal/tile/neutral{dir = 8},/turf/open/floor/plasteel/dark,/area/tdome/tdomeobserve) "jzO" = (/obj/machinery/door/airlock{dir = 4; id_tag = "CCDorm4"; name = "Kris Wulph's Dorm Room"},/turf/open/floor/plasteel,/area/centcom/ferry) "jzZ" = (/obj/machinery/light{dir = 1; pixel_y = 16},/obj/structure/table/wood,/obj/effect/spawner/lootdrop/three_course_meal,/turf/open/floor/mineral/basaltstone_floor,/area/centcom/bunk/one) -"jAn" = (/obj/structure/table/wood,/obj/structure/window/reinforced/spawner/north,/obj/structure/window/reinforced/spawner/west,/obj/item/rupee{desc = "A gift, right?"},/turf/open/floor/plasteel/grimy,/area/centcom/ferry) +"jAn" = (/obj/structure/table/wood,/obj/structure/window/reinforced/spawner/north,/obj/structure/window/reinforced/spawner/west,/turf/open/floor/plasteel/grimy,/area/centcom/ferry) "jAu" = (/obj/structure/barricade/security/ctf,/turf/open/floor/circuit/red,/area/ctf) "jAD" = (/obj/structure/chair/wood/wings{dir = 8},/obj/effect/turf_decal/loading_area{dir = 1; icon_state = "drain"; name = "drain"},/turf/open/floor/wood,/area/centcom/control) "jBx" = (/obj/effect/turf_decal/tile/red{dir = 1},/turf/open/floor/plasteel,/area/centcom/ferry) @@ -2291,7 +2291,6 @@ "uiP" = (/obj/structure/table/wood,/obj/item/book/lorebooks/welcome_to_kinaris,/turf/open/floor/plasteel/grimy,/area/centcom/ferry) "ulC" = (/obj/structure/table,/obj/machinery/computer/secure_data{dir = 8},/obj/structure/window{dir = 1},/turf/open/floor/carpet/royalblack,/area/centcom/ferry) "ulD" = (/obj/effect/turf_decal/tile/neutral{dir = 1},/obj/effect/turf_decal/tile/neutral{dir = 8},/turf/open/floor/plasteel,/area/tdome/arena) -"umu" = (/obj/structure/flora/ausbushes/grassybush,/obj/structure/flora/ausbushes/sparsegrass,/obj/structure/flora/ausbushes/fernybush,/obj/item/storage/backpack/duffelbag/drone{pixel_y = 2},/obj/effect/decal/cleanable/ash{name = "ashes of drone (760)"},/obj/item/clothing/head/hardhat/weldhat,/turf/open/floor/plasteel{dir = 6; icon_state = "asteroid8"; name = "sand"},/area/centcom/control) "umy" = (/obj/structure/window{dir = 1},/obj/item/toy/beach_ball/holoball/dodgeball,/obj/effect/turf_decal/tile/red,/obj/effect/turf_decal/tile/red{dir = 1},/obj/effect/turf_decal/tile/red{dir = 8},/turf/open/floor/holofloor,/area/holodeck/rec_center/dodgeball) "unA" = (/obj/structure/bed,/obj/machinery/light{dir = 8},/turf/open/floor/mineral/titanium/blue,/area/centcom/evac) "unD" = (/obj/structure/table,/obj/item/toy/katana,/obj/item/toy/plush/carpplushie,/obj/effect/turf_decal/stripes/line{dir = 1},/turf/open/floor/plasteel,/area/centcom/evac) @@ -2914,7 +2913,7 @@ fWSfWSnLjmrwgKdvZppfxxbosRAfWSfNxfNxfNxfNxfNxfNxfNxtLzteDvNzvNzteDtLzvNzvNzvNzxl fWSfWSjxDdUEfPNfPNfPNrHlyhVfWSfNxfNxfNxfNxfNxfNxfNxjqfiJGvNzvNziJGjqfuBObjQvNzvNzvNzbjQvNzjqflGEuhZlGEvSEjqffNxfNxfNxfNxfNxfNxfWShPQtNUfrlfrlfrlfrlfrlfrlfrlfrlfrlfrlfrlfrlfrlfrlfrlfrlfrltNUkhpkhpiTtkhpkhpkhpkhpkhpyaajkFrZgkhpfxuqOYogDkhpbrYfCWlPNbrYbrYbrYbrYbrYoDQcdIkhpfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSeDPdmVbBFdZaeRApXKaiYtfqvtzqeNeDPdHsqxFdHspCQisUuEDadibbnshHfpBuqenCbtUQkasshHgmHshHshHaGmmCPshHayyeDPaEyfBIgYiaVugYiuLVaEyudbudbudbaEyfBIgYiaVugYiuLVaEyiYmkMejdSsjHduHcELrCVcphaEyieKboGboGboGyjTwEhboGboGrZPrZPrZPboGboGwEhyjTboGboGboGboGfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWS fWSfWSlpSoMusPZqoXrOZvtqcOMfWSfNxfNxfNxfNxfNxfNxfNxjqfjqfeYGjqfjqfjqfjqfjqftLzeYGtLzjqfjqfjqftLztLztLzjqfjqffNxfNxfNxfNxfNxfNxfWShPQtNUfrlfrlfrlfrlfrlfrlfrlfrlfrlfrlfrlfrlfrlfrlfrlfrlfrltNUkhpoAAmUVocDliAfCDkhphxryaayaayaakhptNfgLDpoMkhpbrYfrKbrYbrYbrYbrYbrYbrYbrYvNukhpfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSxLwxLwxLwxLwxLwxLwfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSeDPtrXdHskGmeDPaiiqeNcfutfquFTeRAdHsqxFdHspCQcQMuEDuEDuEDixgshHgnBfIegnBshHixgktRfneshHshHshHshHlIGktRaEyaEyaEyxUCaEyaEytAXrIBgmogYitAXaEyaEyxUCaEyaEyaEyaEygYigYigYiaEygYigYigYiaEygIvboGbvxbvxjgMfBzboGgvAgvAgvAgvAgvAboGbvxfBzfBzbvxboGboGfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWS fWSfWSwimvhwfPNfPNfPNrHldiWfWSfNxfNxfNxfNxfNxfNxfNxfNxtLzvNzvNzvNzcbevNzvNzvNzvNzvNzvNzvNzcbevNzvNzvNztLzfNxfNxfNxfNxfNxfNxfNxfWShPQtNUfrlfrlfrlfrlfrlfrlfrlfrlfrlfrlfrlfrlfrlfrlfrlfrlfrltNUkhpmUVmUVmUVmUVmUVkhpyaayaayaadrbkhpkhpkhpkhpkhpeufeufbrYbrYbrYbrYbrYbrYbrYvNukhpfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSxLwciKoCLycqchJxLwfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSeDPoJgrhqpKkeRAeNrqeNdWBvyGeheeRAeIpcmtoXMeDPaBwmLpbZJhLYhmkscCflrmWfxiLrwGuRZcJclxWoOImEmgSceWLxXVcJcrirgYiqZYpYierEaEykdLweohlRqlAnCXaEytyCpYiygQgYinhzaEynhzrirqICgYinUwnhznUwgYitnOboGboGboGboGboGboGtJrhdMoOUydigvAutLboGboGboGboGboGboGfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWS -fWSfWSpZSbCeagCxHUejrwxKirqfWSfNxfNxfNxfNxfNxfNxfNxfNxtLzvNzrMVvNzrMVvNzrMVvNzrMVvNzrMVvNzrMVvNzrMVvNztLzfNxfNxfNxfNxfNxfNxfNxfWShPQtNUfrlfrlfrlfrlfrlfrlfrlfrlfrlfrlfrlfrlfrlfrlfrlfrlfrltNUkhpraxmUVmUVmUVlGdkhpvEPrFxuFNyaawXIbrYbrYbrYbrYbrYwXIbrYbrYbrYbrYbrYbrYbrYvNukhpfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSxLwlTQcvzcvztfGxLwxLwxLwxLwxLwxLwxLwxLwxLwxLwxLwxLwxLweDPeDPnIQeDPeDPeDPeRAeRAeRAeDPeDPcJcldjhJZeDPeDPeDPhJZchIcJceDPeDPeDPeDPeDPhJZeDPeDPeDPeDPeDPchIeDPeDPumuiYmgsEpYieMqgYitnBpdTpdTpdTdoWgYikhapYikRfiYmgYiaEygYigYigYiaEygYigYigYiaEygIvboGfWsmHRyfLtflboGgvAfBOfchfBOgvAboGtYVoFztYVtYVwRxreUfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWS +fWSfWSpZSbCeagCxHUejrwxKirqfWSfNxfNxfNxfNxfNxfNxfNxfNxtLzvNzrMVvNzrMVvNzrMVvNzrMVvNzrMVvNzrMVvNzrMVvNztLzfNxfNxfNxfNxfNxfNxfNxfWShPQtNUfrlfrlfrlfrlfrlfrlfrlfrlfrlfrlfrlfrlfrlfrlfrlfrlfrltNUkhpraxmUVmUVmUVlGdkhpvEPrFxuFNyaawXIbrYbrYbrYbrYbrYwXIbrYbrYbrYbrYbrYbrYbrYvNukhpfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSxLwlTQcvzcvztfGxLwxLwxLwxLwxLwxLwxLwxLwxLwxLwxLwxLwxLweDPeDPnIQeDPeDPeDPeRAeRAeRAeDPeDPcJcldjhJZeDPeDPeDPhJZchIcJceDPeDPeDPeDPeDPhJZeDPeDPeDPeDPeDPchIeDPeDPcMDiYmgsEpYieMqgYitnBpdTpdTpdTdoWgYikhapYikRfiYmgYiaEygYigYigYiaEygYigYigYiaEygIvboGfWsmHRyfLtflboGgvAfBOfchfBOgvAboGtYVoFztYVtYVwRxreUfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWS fWSfWSfWSndYtSzjLicKJkOYfWSfWSfNxfNxfNxfNxfNxfNxfNxfNxjqfjqfvNzvNzvNzvNzvNzvNzvNzvNzvNzvNzvNzvNzvNzjqfjqffNxfNxfNxfNxfNxfNxfNxfWShPQtNUfrlfrlfrlfrlfrlfrlfrlfrlfrlfrlfrlfrlfrlfrlfrlfrlfrltNUkhprpjnyjjTEmUVkXNkhpkhpkhpkhpamQkhpkhpkhpkhpkhpeufeufbrYbrYbrYbrYbrYbrYbrYvNukhpfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSxLwxLweYpxLwxLwxLwoqJhLMiwjuFguFgjzZkeykmukJxxQnluAgNWxLwoXMkPgoXMhJZdHsdHsfJApzKpOclrioXMkPgqtClripOcpzKfJAdHsdHshJZsvGhgmsYEhqsozJttroETooqfxChFNhtJaaoaEyuJqgYimbCpYistpfeMhlRpdTwEzpdThlRhBJiIepYipYipYipYijEJpYipYipYivOhpYipYipYinmbgIviVsgIvgIvsIJgIvfuvgvAhdMfqmydibAIboGtYVtYVtYVtYVolvreUfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWS fWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfNxfNxfNxfNxfNxfNxfNxfNxfNxjqfjqfjqfmUXjqfjqfjqfrrXjqfjqfjqfceajqfjqfjqffNxfNxfNxfNxfNxfNxfNxfNxfWShPQtNUfrlfrlfrlfrlfrlfrlfrlfrlfrlfrlfrlfrlfrlfrlfrlfrlfrltNUkhpkhpkhpkhpdbKkhpkhpfWSfWSfWSfWSfWSfWSfWSfWSkhpbrYfrKbrYbrYbrYbrYbrYbrYbrYvNukhpfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSxLwjcqwZWgeNmloxLwirmdgFniSuFguFguFguFgrNksRtxnsepdupwxLwdHsqxFdHsldjcmtqxFqxFqxFqxFqxFqxFqxFqxFqxFqxFqxFqxFqxFkPgoBEixguEDuEDuEDevHuEDfLylJVfgruEDuEDcrraEycMDgKLryxpYisfGeJAwEzpdTpdTpdTwEztlAvCLpYieuNgKLgYiaEyaEyaEyaEynnHaEyaEyaEyaEyeksboGetietietietietietietietietietietitYVetietietietietietietietifWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWS fWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfNxfNxfNxfNxfNxfNxfNxfNxfNxfNxjqfiwDjrzfjdjqfpUYrMViLcjqfkRtgVVrHFjqffNxfNxfNxfNxfNxfNxfNxfNxfNxfWShPQtNUfrlfrlfrlfrlfrltNUtNUtNUtNUtNUtNUtNUfrlfrlfrlfrlfrltNUeJJelHhPQfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSkhpbrYbMcbpAbrYbrYjLvbrYbrYaEdrqMkhpfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSxLwdsdwZWdLwmwSkBOobblgRlgRlgRlgRtLqoujojlpeWaXJkkedtwxLwdHsqxFxMueDPeZqpigulCmAupigxwthKVqxFrxSpigmJbnOKpigxwtjTtcJcmDWuEDuEDuEDuEDuEDuEDgHKuEDlrduEDcsuaEynUwgYivuOsCbtYagYispavqbhlRcZkdGPgYibWxdwtnBrgYiqICaEyrirgYivOhpYipYiaEytYVtYVtYVetirCUusnetisrmtoVmDSmDStoVhaPetitYVtYVetimigfBHfBHfBHfBHqNTetifWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWSfWS diff --git a/code/__DEFINES/traits.dm b/code/__DEFINES/traits.dm index 20ddeac19..de2ac0ee4 100644 --- a/code/__DEFINES/traits.dm +++ b/code/__DEFINES/traits.dm @@ -196,6 +196,7 @@ #define TRAIT_MACROPHILE "macrophile" //likes the big #define TRAIT_MICROPHILE "microphile" //likes the small #define TRAIT_APATHETIC "apathetic" //doesn't care +#define TRAIT_LOW_PRESSURE_LUNGS "low_puressure_lungs" //used to lower kPa of Lavaland and other low kPa Atmos. #define TRAIT_TOUGH "tough" //you have 10% more maxhealth #define TRAIT_AUTO_CATCH_ITEM "auto_catch_item" diff --git a/code/controllers/subsystem/ticker.dm b/code/controllers/subsystem/ticker.dm index 6375b7382..1a9f1a57a 100644 --- a/code/controllers/subsystem/ticker.dm +++ b/code/controllers/subsystem/ticker.dm @@ -697,7 +697,8 @@ SUBSYSTEM_DEF(ticker) 'hyperstation/sound/roundend/starbucks.ogg', 'hyperstation/sound/roundend/tired.ogg', 'hyperstation/sound/roundend/toys.ogg', - 'hyperstation/sound/roundend/water.ogg'\ + 'hyperstation/sound/roundend/water.ogg', + 'hyperstation/sound/roundend/whatiswrong.ogg'\ ) SEND_SOUND(world, sound(round_end_sound)) diff --git a/code/datums/traits/good.dm b/code/datums/traits/good.dm index dc21a916e..668e9affa 100644 --- a/code/datums/traits/good.dm +++ b/code/datums/traits/good.dm @@ -267,6 +267,71 @@ if(quirk_holder) quirk_holder.blood_ratio = 1 +/datum/quirk/low_pressure_lungs + name = "Low Pressure Lungs" + desc = "You're not quite used to the high air pressure! Perfect for characters who are used to the atmosphere of Lavaland or Asteroids!" + value = -1 + category = CATEGORY_BODY + mob_trait = TRAIT_LOW_PRESSURE_LUNGS + var/slot_string = "lungs" + var/specific = null + gain_text = "You feel your lungs taking in more air." + lose_text = "You feel like the air is not as plentiful." + medical_record_text = "During physical examination, patient was found to have lungs adapted to low pressure environments." + +/datum/quirk/low_pressure_lungs/add() //*Edits your lungs* + var/obj/item/organ/lungs/lungs = quirk_holder.getorgan(/obj/item/organ/lungs) + + lungs.safe_oxygen_min = 3 + lungs.safe_oxygen_max = 18 + + + lungs.cold_level_1_threshold = 280 + lungs.cold_level_2_threshold = 240 + lungs.cold_level_3_threshold = 200 + + lungs.heat_level_1_threshold = 400 + lungs.heat_level_2_threshold = 600 + +/datum/quirk/low_pressure_lungs/remove() //*Unedits your lungs* + var/obj/item/organ/lungs/lungs = quirk_holder.getorgan(/obj/item/organ/lungs) + + lungs.safe_oxygen_min = 16 + lungs.safe_oxygen_max = 50 + + + lungs.cold_level_1_threshold = 260 + lungs.cold_level_2_threshold = 200 + lungs.cold_level_3_threshold = 120 + + lungs.heat_level_1_threshold = 360 + lungs.heat_level_2_threshold = 400 + +/datum/quirk/low_pressure_lungs/post_add() + to_chat(quirk_holder, "Your [slot_string] feel the heavy pressure of the air.") + +/datum/quirk/low_pressure_lungs/on_spawn() + var/mob/living/carbon/human/H = quirk_holder + + //Adding Breath Mask and Emergency Tank + var/obj/item/clothing/mask/breath/breath = new(get_turf(H)) + var/list/breth = list ( //shu-ut up, Brethyyyy. + "face" = SLOT_WEAR_MASK + ) + H.equip_in_one_of_slots(breath, breth, qdel_on_fail = FALSE) + + var/obj/item/tank/internals/emergency_oxygen/emergency_oxygen = new(get_turf(H)) + var/list/oxy_tank = list ( + "left pocket" = SLOT_L_STORE, + "right pocket" = SLOT_R_STORE, + "hands" = SLOT_HANDS + ) + emergency_oxygen.air_contents.gases[/datum/gas/oxygen] = (6*ONE_ATMOSPHERE)*6/(R_IDEAL_GAS_EQUATION*T20C) + H.equip_in_one_of_slots(emergency_oxygen, oxy_tank, qdel_on_fail = FALSE) + H.internal = emergency_oxygen + H.update_internals_hud_icon(1) + H.regenerate_icons() + /datum/quirk/tough name = "Tough" desc = "Your body is abnormally enduring and can take 10% more damage." diff --git a/code/game/gamemodes/dynamic/dynamic_rulesets_events.dm b/code/game/gamemodes/dynamic/dynamic_rulesets_events.dm index 1a2f42a28..ce96ece44 100644 --- a/code/game/gamemodes/dynamic/dynamic_rulesets_events.dm +++ b/code/game/gamemodes/dynamic/dynamic_rulesets_events.dm @@ -717,7 +717,7 @@ typepath = /datum/round_event/camera_failure requirements = list(0,0,0,0,0,0,0,0,0,0) high_population_requirement = 0 - weight = 100 + weight = 8 cost = 2 repeatable_weight_decrease = 2 //Slightly drop the weight each time it is called to keep the pool from getting too diluted as the round goes on. repeatable = TRUE @@ -726,12 +726,14 @@ /datum/dynamic_ruleset/event/filler name = "Filler" typepath = /datum/round_event/filler + requirements = list(0,0,0,0,0,0,0,0,0,0) + high_population_requirement = 0 chaos_max = 3 + weight = 9 cost = 1 - weight = 200 repeatable_weight_decrease = 0 repeatable = TRUE - occurances_max = 35 + occurances_max = 250 //Testing with this number for now /datum/dynamic_ruleset/event/disease_outbreak name = "Disease Outbreak" @@ -772,8 +774,8 @@ typepath = /datum/round_event/mass_hallucination requirements = list(0,0,0,0,0,0,0,0,0,0) high_population_requirement = 0 - weight = 4 - cost = 2 + weight = 1 + cost = 4 repeatable_weight_decrease = 5 repeatable = TRUE occurances_max = 2 @@ -810,7 +812,7 @@ requirements = list(101,101,0,0,0,0,0,0,0,0) high_population_requirement = 0 weight = 5 - cost = 2 //STOP ROLLING SO MUCH YOU MENACE + cost = 10 //STOP ROLLING SO MUCH YOU MENACE repeatable_weight_decrease = 1 /datum/dynamic_ruleset/event/shuttle_loan diff --git a/code/game/objects/items/defib.dm b/code/game/objects/items/defib.dm index f3efb52d4..f4176748e 100644 --- a/code/game/objects/items/defib.dm +++ b/code/game/objects/items/defib.dm @@ -673,7 +673,7 @@ primetime = 10 return TRUE if(istype(I, /obj/item/disk/medical/defib_decay)) - if(!timedeath == initial(timedeath)) + if(timedeath != initial(timedeath)) to_chat(user, "This unit is already upgraded with this disk!") return TRUE to_chat(user, "You upgrade the unit with Longer Decay upgrade disk!") diff --git a/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm b/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm index 57800e5cd..ecd7de059 100644 --- a/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm +++ b/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm @@ -662,8 +662,8 @@ This is here to make the tiles around the station mininuke change when it's arme var/datum/round_event_control/operative/loneop = locate(/datum/round_event_control/operative) in SSevents.control if(istype(loneop)) loneop.weight += 1 - if(loneop.weight % 5 == 0) - message_admins("[src] is stationary in [ADMIN_VERBOSEJMP(newturf)]. The weight of Lone Operative is now [loneop.weight].") +// if(loneop.weight % 5 == 0) +// message_admins("[src] is stationary in [ADMIN_VERBOSEJMP(newturf)]. The weight of Lone Operative is now [loneop.weight].") log_game("[src] is stationary for too long in [loc_name(newturf)], and has increased the weight of the Lone Operative event to [loneop.weight].") else lastlocation = newturf @@ -671,8 +671,8 @@ This is here to make the tiles around the station mininuke change when it's arme var/datum/round_event_control/operative/loneop = locate(/datum/round_event_control/operative) in SSevents.control if(istype(loneop) && prob(loneop.weight)) loneop.weight = max(loneop.weight - 1, 0) - if(loneop.weight % 5 == 0) - message_admins("[src] is on the move (currently in [ADMIN_VERBOSEJMP(newturf)]). The weight of Lone Operative is now [loneop.weight].") +// if(loneop.weight % 5 == 0) +// message_admins("[src] is on the move (currently in [ADMIN_VERBOSEJMP(newturf)]). The weight of Lone Operative is now [loneop.weight].") log_game("[src] being on the move has reduced the weight of the Lone Operative event to [loneop.weight].") /obj/item/disk/nuclear/examine(mob/user) diff --git a/code/modules/events/holiday/vday.dm b/code/modules/events/holiday/vday.dm index ac0a76057..269cad9fb 100644 --- a/code/modules/events/holiday/vday.dm +++ b/code/modules/events/holiday/vday.dm @@ -6,10 +6,10 @@ /datum/round_event_control/valentines name = "Valentines!" - holidayID = VALENTINES + //holidayID = VALENTINES this is just asking for noncon and bad shit typepath = /datum/round_event/valentines - weight = -1 //forces it to be called, regardless of weight - max_occurrences = 1 + weight = 0 + max_occurrences = 0 earliest_start = 0 MINUTES /datum/round_event/valentines/start() diff --git a/code/modules/food_and_drinks/food/snacks_other.dm b/code/modules/food_and_drinks/food/snacks_other.dm index 30f12279c..3a587d2ae 100644 --- a/code/modules/food_and_drinks/food/snacks_other.dm +++ b/code/modules/food_and_drinks/food/snacks_other.dm @@ -256,6 +256,45 @@ tastes = list("fudge" = 1) foodtype = JUNKFOOD | SUGAR +/obj/item/reagent_containers/food/snacks/choccogun + name = "golden gun" + desc = "It's a golden gun! Probably will instantly kill who ever is hit." + icon_state = "pyritegun" + w_class = WEIGHT_CLASS_SMALL + attack_verb = list("pistol whipped") + bonus_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/sugar = 5, /datum/reagent/iron = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 15, /datum/reagent/consumable/coco = 5) + filling_color = "#A0522D" + tastes = list("fudge" = 1, "metal" = 1) + bitesize = 0.1 + foodtype = JUNKFOOD | SUGAR + + var is_wrapped = 1 + +/obj/item/reagent_containers/food/snacks/choccogun/afterattack(user) + if (is_wrapped == 1) + to_chat(user, "*click*") + playsound(src, "gun_dry_fire", 30, 1) + else //no more clicking chocolate for you. <3 + return + +/obj/item/reagent_containers/food/snacks/choccogun/attack_self(mob/user) + if (is_wrapped == 1) + to_chat(user, "You look at the gun and find it's made of chocolate, unwrapping it.") + + name = "chocolate gun" + desc = "This explains why it wasn't firing at all.." + icon_state = "choccogun" + bonus_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/sugar = 5, /datum/reagent/gold = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 15, /datum/reagent/consumable/coco = 5) + filling_color = "#A0522D" + tastes = list("fudge" = 1) + foodtype = JUNKFOOD | SUGAR + + is_wrapped = 0 + else + return + /obj/item/reagent_containers/food/snacks/chocoorange name = "chocolate orange" desc = "A festive chocolate orange." diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_misc.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_misc.dm index 5b5ff4c5a..3cbb62fee 100644 --- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_misc.dm +++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_misc.dm @@ -49,6 +49,15 @@ result = /obj/item/reagent_containers/food/snacks/chocoorange subcategory = CAT_MISCFOOD +/datum/crafting_recipe/food/choccogun + name = "Choco gun" + reqs = list( + /datum/reagent/iron = 1, + /obj/item/reagent_containers/food/snacks/chocolatebar = 1, + ) + result = /obj/item/reagent_containers/food/snacks/choccogun + subcategory = CAT_MISCFOOD + /datum/crafting_recipe/food/loadedbakedpotato name = "Loaded baked potato" time = 40 diff --git a/code/modules/mob/living/carbon/human/species_types/podpeople.dm b/code/modules/mob/living/carbon/human/species_types/podpeople.dm index 786357dd5..d18357342 100644 --- a/code/modules/mob/living/carbon/human/species_types/podpeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/podpeople.dm @@ -3,7 +3,10 @@ name = "Podperson" id = "pod" default_color = "59CE00" - species_traits = list(MUTCOLORS,EYECOLOR) + species_traits = list(MUTCOLORS,EYECOLOR,LIPS,HAIR,FACEHAIR,WINGCOLOR) + inherent_biotypes = list(MOB_ORGANIC, MOB_HUMANOID) + mutant_bodyparts = list("mam_tail", "mam_ears", "mam_body_markings", "mam_snouts", "legs", "deco_wings") + default_features = list("mcolor" = "FFF","mcolor2" = "FFF","mcolor3" = "FFF", "mam_snouts" = "None", "mam_tail" = "None", "mam_ears" = "None", "mam_body_markings" = "None", "legs" = "Normal Legs" , "deco_wings" = "None" ) attack_verb = "slash" attack_sound = 'sound/weapons/slice.ogg' miss_sound = 'sound/weapons/slashmiss.ogg' @@ -68,6 +71,37 @@ if(/obj/item/projectile/energy/florayield) H.nutrition = min(H.nutrition+30, NUTRITION_LEVEL_FULL) +/datum/species/pod/spec_death(gibbed, mob/living/carbon/human/H) + if(H) + stop_wagging_tail(H) + +/datum/species/pod/spec_stun(mob/living/carbon/human/H,amount) + if(H) + stop_wagging_tail(H) + . = ..() + +/datum/species/pod/can_wag_tail(mob/living/carbon/human/H) + return ("mam_tail" in mutant_bodyparts) || ("mam_waggingtail" in mutant_bodyparts) + +/datum/species/pod/is_wagging_tail(mob/living/carbon/human/H) + return ("mam_waggingtail" in mutant_bodyparts) + +/datum/species/pod/start_wagging_tail(mob/living/carbon/human/H) + if("mam_tail" in mutant_bodyparts) + mutant_bodyparts -= "mam_tail" + mutant_bodyparts |= "mam_waggingtail" + H.update_body() + +/datum/species/pod/stop_wagging_tail(mob/living/carbon/human/H) + if("mam_waggingtail" in mutant_bodyparts) + mutant_bodyparts -= "mam_waggingtail" + mutant_bodyparts |= "mam_tail" + H.update_body() + + +/datum/species/pod/qualifies_for_rank(rank, list/features) + return TRUE + /datum/species/pod/pseudo_weak id = "podweak" limbs_id = "pod" diff --git a/code/modules/reagents/reagent_containers/Chemical_tongue.dm b/code/modules/reagents/reagent_containers/Chemical_tongue.dm index 275091254..d2f13dfc0 100644 --- a/code/modules/reagents/reagent_containers/Chemical_tongue.dm +++ b/code/modules/reagents/reagent_containers/Chemical_tongue.dm @@ -57,7 +57,7 @@ if(user.a_intent == INTENT_DISARM && user.zone_selected == BODY_ZONE_PRECISE_MOUTH) if(M != user) M.visible_message("[user] attempts nuzzles into [M]'s.", \ - "[user] attempts to bump his snout against yours.") + "[user] attempts to bump their snout against yours.") if(!do_mob(user, M, 10)) return playsound(M.loc,'sound/effects/attackblob.ogg', rand(10,50), 1) diff --git a/code/modules/vending/wardrobes.dm b/code/modules/vending/wardrobes.dm index 5f9dee9d4..e4ae744fe 100644 --- a/code/modules/vending/wardrobes.dm +++ b/code/modules/vending/wardrobes.dm @@ -233,12 +233,9 @@ /obj/item/clothing/head/soft/black = 4, /obj/item/clothing/shoes/sneakers/black = 4, /obj/item/reagent_containers/rag = 4, - /obj/item/storage/box/beanbag = 1, - /obj/item/clothing/suit/armor/vest/alt = 1, /obj/item/circuitboard/machine/dish_drive = 1, /obj/item/clothing/glasses/sunglasses/reagent = 1, - /obj/item/clothing/neck/petcollar = 3, - /obj/item/storage/belt/bandolier = 1) + /obj/item/clothing/neck/petcollar = 3) refill_canister = /obj/item/vending_refill/wardrobe/bar_wardrobe /obj/item/vending_refill/wardrobe/bar_wardrobe diff --git a/config/game_options.txt b/config/game_options.txt index 495040381..06753fd5e 100644 --- a/config/game_options.txt +++ b/config/game_options.txt @@ -440,7 +440,7 @@ ROUNDSTART_RACES felinid #ROUNDSTART_RACES skeleton #ROUNDSTART_RACES zombie #ROUNDSTART_RACES slime -#ROUNDSTART_RACES pod +ROUNDSTART_RACES pod #ROUNDSTART_RACES military_synth #ROUNDSTART_RACES agent diff --git a/hyperstation/code/modules/mob/dead/new_player/sprite_accessories.dm b/hyperstation/code/modules/mob/dead/new_player/sprite_accessories.dm index dc73ebf05..7178f1b32 100644 --- a/hyperstation/code/modules/mob/dead/new_player/sprite_accessories.dm +++ b/hyperstation/code/modules/mob/dead/new_player/sprite_accessories.dm @@ -102,6 +102,16 @@ SNOUTS icon_state = "chemlight" icon = 'hyperstation/icons/mob/char_snouts.dmi' +/datum/sprite_accessory/mam_snouts/pinata + name = "pinata (Hyper)" + icon_state = "pinata" + icon = 'hyperstation/icons/mob/char_snouts.dmi' + +/datum/sprite_accessory/mam_snouts/pinatasmile + name = "pinata Smile (Hyper)" + icon_state = "pinatasmile" + icon = 'hyperstation/icons/mob/char_snouts.dmi' + /* EARS ========================================================== @@ -455,6 +465,11 @@ from modular_citadel/code/modules/mob/dead/new_player/sprite_accessories.dm: icon_state = "raccalt" icon = 'hyperstation/icons/mob/char_markings.dmi' +/datum/sprite_accessory/mam_body_markings/pinata + name = "pinata (Hyper)" + icon_state = "pinata" + icon = 'hyperstation/icons/mob/char_markings.dmi' + /* TAUR BODIES ========================================================== @@ -613,6 +628,56 @@ from code/modules/mob/dead/new_player/sprite_accessories/hair_head.dm: name = "Emo (Hyper)" icon_state = "hair_emoh" +/datum/sprite_accessory/hair/espada + name = "Espada (Plant) (Hyper)" + icon_state = "hair_espada" + icon = 'hyperstation/icons/mob/char_hair.dmi' + +/datum/sprite_accessory/hair/guarana + name = "Guarana (Plant) (Hyper)" + icon_state = "hair_guarana" + icon = 'hyperstation/icons/mob/char_hair_big.dmi' + center = TRUE + dimension_y = 38 + +/datum/sprite_accessory/hair/ipe + name = "Ipe (Plant) (Hyper)" + icon_state = "hair_ipe" + icon = 'hyperstation/icons/mob/char_hair_big.dmi' + center = TRUE + dimension_y = 38 + +/datum/sprite_accessory/hair/narciso + name = "Narciso (Plant) (Hyper)" + icon_state = "hair_narciso" + icon = 'hyperstation/icons/mob/char_hair.dmi' + +/datum/sprite_accessory/hair/ninfeia + name = "Ninfeia (Plant) (Hyper)" + icon_state = "hair_ninfeia" + icon = 'hyperstation/icons/mob/char_hair_big.dmi' + center = TRUE + dimension_y = 38 + +/datum/sprite_accessory/hair/paubrasil + name = "Pau-Brasil (Plant) (Hyper)" + icon_state = "hair_paubrasil" + icon = 'hyperstation/icons/mob/char_hair_big.dmi' + center = TRUE + dimension_y = 38 + +/datum/sprite_accessory/hair/roseira + name = "Roseira (Plant) (Hyper)" + icon_state = "hair_roseira" + icon = 'hyperstation/icons/mob/char_hair_big.dmi' + center = TRUE + dimension_y = 38 + +/datum/sprite_accessory/hair/samambaia + name = "Samambaia (Plant) (Hyper)" + icon_state = "hair_samambaia" + icon = 'hyperstation/icons/mob/char_hair.dmi' + /* BEARDS ========================================================== diff --git a/hyperstation/code/obj/ZaoCorp/Zweihander.dm b/hyperstation/code/obj/ZaoCorp/Zweihander.dm index e79fa473e..bc3d7256a 100644 --- a/hyperstation/code/obj/ZaoCorp/Zweihander.dm +++ b/hyperstation/code/obj/ZaoCorp/Zweihander.dm @@ -206,9 +206,9 @@ if(attack_type == UNARMED_ATTACK) final_block_chance = 100 //How easy is it to block a hand? if(attack_type == PROJECTILE_ATTACK) - final_block_chance = 80 //With the suit it helps against bullets + final_block_chance = 95 //With the suit it helps against bullets if(attack_type == THROWN_PROJECTILE_ATTACK) - final_block_chance = 50 //Sometimes you may be off guard + final_block_chance = 100 //Sometimes you may be off guard if(attack_type == LEAP_ATTACK) final_block_chance = 100 //BRACE return ..() @@ -218,4 +218,4 @@ "You accidentally hit yourself with [src]!") SEND_SIGNAL(user, COMSIG_LIVING_MINOR_SHOCK) user.Knockdown(stunforce*3) - playsound(get_turf(src), 'sound/effects/woodhit.ogg', 75, 1, -1) \ No newline at end of file + playsound(get_turf(src), 'sound/effects/woodhit.ogg', 75, 1, -1) diff --git a/hyperstation/icons/mob/char_hair.dmi b/hyperstation/icons/mob/char_hair.dmi index da5512b74..fc0819e43 100644 Binary files a/hyperstation/icons/mob/char_hair.dmi and b/hyperstation/icons/mob/char_hair.dmi differ diff --git a/hyperstation/icons/mob/char_hair_big.dmi b/hyperstation/icons/mob/char_hair_big.dmi new file mode 100644 index 000000000..b63021948 Binary files /dev/null and b/hyperstation/icons/mob/char_hair_big.dmi differ diff --git a/hyperstation/icons/mob/char_markings.dmi b/hyperstation/icons/mob/char_markings.dmi index 916587c6b..5aff5e4d1 100644 Binary files a/hyperstation/icons/mob/char_markings.dmi and b/hyperstation/icons/mob/char_markings.dmi differ diff --git a/hyperstation/icons/mob/char_snouts.dmi b/hyperstation/icons/mob/char_snouts.dmi index 92c21d9c1..92b3163d8 100644 Binary files a/hyperstation/icons/mob/char_snouts.dmi and b/hyperstation/icons/mob/char_snouts.dmi differ diff --git a/hyperstation/sound/roundend/whatiswrong.ogg b/hyperstation/sound/roundend/whatiswrong.ogg new file mode 100644 index 000000000..af9e6e862 Binary files /dev/null and b/hyperstation/sound/roundend/whatiswrong.ogg differ diff --git a/icons/obj/food/food.dmi b/icons/obj/food/food.dmi index 355bd43fd..e473b84fb 100644 Binary files a/icons/obj/food/food.dmi and b/icons/obj/food/food.dmi differ diff --git a/icons/obj/power.dmi b/icons/obj/power.dmi index 25e6b1d37..a065a3aa4 100644 Binary files a/icons/obj/power.dmi and b/icons/obj/power.dmi differ diff --git a/icons/obj/stock_parts.dmi b/icons/obj/stock_parts.dmi index fbc8be547..b25e495e6 100644 Binary files a/icons/obj/stock_parts.dmi and b/icons/obj/stock_parts.dmi differ diff --git a/icons/obj/storage.dmi b/icons/obj/storage.dmi index be186ba96..91165141d 100644 Binary files a/icons/obj/storage.dmi and b/icons/obj/storage.dmi differ diff --git a/modular_citadel/code/modules/jobs/job_types/cargo_service.dm b/modular_citadel/code/modules/jobs/job_types/cargo_service.dm index eeb913053..8ac1663d3 100644 --- a/modular_citadel/code/modules/jobs/job_types/cargo_service.dm +++ b/modular_citadel/code/modules/jobs/job_types/cargo_service.dm @@ -1,7 +1,3 @@ -/datum/job/bartender - access = list(ACCESS_HYDROPONICS, ACCESS_BAR, ACCESS_KITCHEN, ACCESS_MORGUE, ACCESS_WEAPONS, ACCESS_MINERAL_STOREROOM) - minimal_access = list(ACCESS_BAR, ACCESS_MINERAL_STOREROOM) - /datum/job/qm department_head = list("Captain") supervisors = "the captain" @@ -28,4 +24,4 @@ department_head = list("Quartermaster") supervisors = "the quartermaster" - access = list(ACCESS_MAINT_TUNNELS, ACCESS_MAILSORTING, ACCESS_CARGO, ACCESS_CARGO_BOT, ACCESS_MINING, ACCESS_MINING_STATION, ACCESS_MINERAL_STOREROOM) \ No newline at end of file + access = list(ACCESS_MAINT_TUNNELS, ACCESS_MAILSORTING, ACCESS_CARGO, ACCESS_CARGO_BOT, ACCESS_MINING, ACCESS_MINING_STATION, ACCESS_MINERAL_STOREROOM)