From 66c05d192391c5038bca47e71d604fc8549cb4cc Mon Sep 17 00:00:00 2001 From: SapphicOverload <93578146+SapphicOverload@users.noreply.github.com> Date: Fri, 2 Dec 2022 07:04:52 -0500 Subject: [PATCH] IPC cooling/heating rework (#16580) * ipc cooling rework * forgor to allow the IPC tanks into suit storages * missed a few * yikes * as requested * remove smoke effect, may add later --- code/__DEFINES/inventory.dm | 7 +++-- code/datums/outfit.dm | 3 +++ code/game/objects/items/holy_weapons.dm | 6 ++--- code/game/objects/items/storage/boxes.dm | 11 ++++++++ code/game/objects/items/tanks/tank_types.dm | 18 +++++++++++++ .../changeling/powers/mutations.dm | 4 +-- code/modules/clothing/suits/_suits.dm | 2 +- code/modules/clothing/suits/armor.dm | 2 +- code/modules/clothing/suits/chaplainsuits.dm | 4 +-- code/modules/clothing/suits/jobs.dm | 4 +-- code/modules/clothing/suits/labcoat.dm | 4 +-- code/modules/clothing/suits/miscellaneous.dm | 24 +++++++++--------- code/modules/clothing/suits/utility.dm | 2 +- code/modules/jobs/job_types/_job.dm | 3 +++ code/modules/jobs/job_types/shaft_miner.dm | 1 + code/modules/mob/living/carbon/human/life.dm | 2 +- .../living/carbon/human/species_types/IPC.dm | 5 ++-- code/modules/mob/living/carbon/life.dm | 2 +- .../research/designs/autolathe_designs.dm | 9 +++++++ code/modules/research/techweb/all_nodes.dm | 2 +- code/modules/surgery/organs/augments_chest.dm | 7 +++++ code/modules/surgery/organs/lungs.dm | 21 ++++++++------- .../mob/inhands/equipment/tanks_lefthand.dmi | Bin 4511 -> 2295 bytes .../mob/inhands/equipment/tanks_righthand.dmi | Bin 4426 -> 2260 bytes .../code/modules/clothing/suits/armor.dm | 2 +- .../modules/clothing/suits/miscellaneous.dm | 22 ++++++++-------- .../modules/jobs/job_types/mining_medic.dm | 1 + yogstation/icons/obj/tank.dmi | Bin 10490 -> 10920 bytes 28 files changed, 112 insertions(+), 56 deletions(-) diff --git a/code/__DEFINES/inventory.dm b/code/__DEFINES/inventory.dm index 70c3e36fba23..de3fb8cf58ff 100644 --- a/code/__DEFINES/inventory.dm +++ b/code/__DEFINES/inventory.dm @@ -215,7 +215,8 @@ GLOBAL_LIST_INIT(detective_vest_allowed, typecacheof(list( /obj/item/restraints/handcuffs, /obj/item/storage/box/fancy/cigarettes, /obj/item/tank/internals/emergency_oxygen, - /obj/item/tank/internals/plasmaman))) + /obj/item/tank/internals/plasmaman, + /obj/item/tank/internals/ipc_coolant))) GLOBAL_LIST_INIT(security_vest_allowed, typecacheof(list( /obj/item/ammo_box, @@ -229,7 +230,8 @@ GLOBAL_LIST_INIT(security_vest_allowed, typecacheof(list( /obj/item/reagent_containers/spray/pepper, /obj/item/restraints/handcuffs, /obj/item/tank/internals/emergency_oxygen, - /obj/item/tank/internals/plasmaman))) + /obj/item/tank/internals/plasmaman, + /obj/item/tank/internals/ipc_coolant))) GLOBAL_LIST_INIT(security_wintercoat_allowed, typecacheof(list( /obj/item/ammo_box, @@ -245,4 +247,5 @@ GLOBAL_LIST_INIT(security_wintercoat_allowed, typecacheof(list( /obj/item/restraints/handcuffs, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, + /obj/item/tank/internals/ipc_coolant, /obj/item/toy))) diff --git a/code/datums/outfit.dm b/code/datums/outfit.dm index 6a1ca4c4e5e9..2e545ed19940 100755 --- a/code/datums/outfit.dm +++ b/code/datums/outfit.dm @@ -88,6 +88,9 @@ /// Internals box. Will be inserted at the start of backpack_contents var/box + /// Special internals box for IPCs. + var/ipc_box = /obj/item/storage/box/ipc + /** * Any implants the mob should start implanted with * diff --git a/code/game/objects/items/holy_weapons.dm b/code/game/objects/items/holy_weapons.dm index 57130eb230c0..fb5a05cf3015 100644 --- a/code/game/objects/items/holy_weapons.dm +++ b/code/game/objects/items/holy_weapons.dm @@ -73,7 +73,7 @@ icon_state = "knight_templar" item_state = "knight_templar" armor = list(MELEE = 40, BULLET = 10, LASER = 5,ENERGY = 5, BOMB = 5, BIO = 2, RAD = 0, FIRE = 0, ACID = 50) - allowed = list(/obj/item/storage/book/bible, /obj/item/nullrod, /obj/item/reagent_containers/food/drinks/bottle/holywater, /obj/item/storage/box/fancy/candle_box, /obj/item/candle, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman) + allowed = list(/obj/item/storage/book/bible, /obj/item/nullrod, /obj/item/reagent_containers/food/drinks/bottle/holywater, /obj/item/storage/box/fancy/candle_box, /obj/item/candle, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/tank/internals/ipc_coolant) slowdown = 0 blocks_shove_knockdown = FALSE @@ -129,7 +129,7 @@ icon_state = "studentuni" item_state = "studentuni" body_parts_covered = ARMS|CHEST - allowed = list(/obj/item/storage/book/bible, /obj/item/nullrod, /obj/item/reagent_containers/food/drinks/bottle/holywater, /obj/item/storage/box/fancy/candle_box, /obj/item/candle, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman) + allowed = list(/obj/item/storage/book/bible, /obj/item/nullrod, /obj/item/reagent_containers/food/drinks/bottle/holywater, /obj/item/storage/box/fancy/candle_box, /obj/item/candle, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/tank/internals/ipc_coolant) /obj/item/clothing/head/helmet/chaplain/cage name = "cage" @@ -197,7 +197,7 @@ icon_state = "chaplain_hoodie" item_state = "chaplain_hoodie" body_parts_covered = CHEST|GROIN|LEGS|ARMS - allowed = list(/obj/item/storage/book/bible, /obj/item/nullrod, /obj/item/reagent_containers/food/drinks/bottle/holywater, /obj/item/storage/box/fancy/candle_box, /obj/item/candle, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman) + allowed = list(/obj/item/storage/book/bible, /obj/item/nullrod, /obj/item/reagent_containers/food/drinks/bottle/holywater, /obj/item/storage/box/fancy/candle_box, /obj/item/candle, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/tank/internals/ipc_coolant) hoodtype = /obj/item/clothing/head/hooded/chaplain_hood /obj/item/clothing/head/hooded/chaplain_hood diff --git a/code/game/objects/items/storage/boxes.dm b/code/game/objects/items/storage/boxes.dm index c08f4ec2fc5d..520ab3a15df6 100644 --- a/code/game/objects/items/storage/boxes.dm +++ b/code/game/objects/items/storage/boxes.dm @@ -183,6 +183,17 @@ new /obj/item/gps/mining(src) new /obj/item/reagent_containers/autoinjector/medipen(src) +// IPC survival box +/obj/item/storage/box/ipc/PopulateContents() + new /obj/item/tank/internals/ipc_coolant(src) + new /obj/item/reagent_containers/autoinjector/medipen(src) + +/obj/item/storage/box/ipc/miner/PopulateContents() //IPC mining box + new /obj/item/tank/internals/ipc_coolant(src) + new /obj/item/crowbar/red(src) + new /obj/item/gps/mining(src) + new /obj/item/reagent_containers/autoinjector/medipen(src) + /obj/item/storage/box/gloves name = "box of latex gloves" desc = "Contains sterile latex gloves." diff --git a/code/game/objects/items/tanks/tank_types.dm b/code/game/objects/items/tanks/tank_types.dm index 3042cc3d5adf..13a8e629438e 100644 --- a/code/game/objects/items/tanks/tank_types.dm +++ b/code/game/objects/items/tanks/tank_types.dm @@ -176,3 +176,21 @@ /obj/item/tank/internals/emergency_oxygen/double/empty/populate_gas() return + +/obj/item/tank/internals/ipc_coolant + name = "IPC coolant tank" + desc = "A tank of cold nitrogen for use as a coolant by IPCs. Not breathable." + icon_state = "ipc_coolant" + item_state = "ipc_coolant" + slot_flags = ITEM_SLOT_BELT + force = 5 + volume = 6 + w_class = WEIGHT_CLASS_SMALL + distribute_pressure = 8 + +/obj/item/tank/internals/ipc_coolant/populate_gas() + air_contents.set_moles(/datum/gas/nitrogen, (10 * ONE_ATMOSPHERE) * volume / (R_IDEAL_GAS_EQUATION * (T0C - 50))) + air_contents.set_temperature(T0C - 50) + +/obj/item/tank/internals/ipc_coolant/empty/populate_gas() + return diff --git a/code/modules/antagonists/changeling/powers/mutations.dm b/code/modules/antagonists/changeling/powers/mutations.dm index bbf6ad5c39c2..6dd886926bd8 100644 --- a/code/modules/antagonists/changeling/powers/mutations.dm +++ b/code/modules/antagonists/changeling/powers/mutations.dm @@ -539,7 +539,7 @@ flags_inv = HIDEJUMPSUIT cold_protection = 0 heat_protection = 0 - allowed = list(/obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman) // allows ling armor to carry the usual space suit tanks. + allowed = list(/obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/tank/internals/ipc_coolant) // allows ling armor to carry the usual space suit tanks. /obj/item/clothing/suit/armor/changeling/Initialize() . = ..() @@ -640,4 +640,4 @@ if(!isnull(target)) S.take_damage(structure_damage, BRUTE, "melee", 0) if(make_sound) - playsound(src, 'sound/effects/bang.ogg', 50, 1) \ No newline at end of file + playsound(src, 'sound/effects/bang.ogg', 50, 1) diff --git a/code/modules/clothing/suits/_suits.dm b/code/modules/clothing/suits/_suits.dm index 40eb3dfc4c3b..ddf993033da7 100644 --- a/code/modules/clothing/suits/_suits.dm +++ b/code/modules/clothing/suits/_suits.dm @@ -2,7 +2,7 @@ icon = 'icons/obj/clothing/suits.dmi' name = "suit" var/fire_resist = T0C+100 - allowed = list(/obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman) + allowed = list(/obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/tank/internals/ipc_coolant) armor = list(MELEE = 0, BULLET = 0, LASER = 0,ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 0, ACID = 0) drop_sound = 'sound/items/handling/cloth_drop.ogg' pickup_sound = 'sound/items/handling/cloth_pickup.ogg' diff --git a/code/modules/clothing/suits/armor.dm b/code/modules/clothing/suits/armor.dm index 078d27d0fa2f..22ae00792d69 100644 --- a/code/modules/clothing/suits/armor.dm +++ b/code/modules/clothing/suits/armor.dm @@ -228,7 +228,7 @@ item_state = "centcom" w_class = WEIGHT_CLASS_BULKY body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS - allowed = list(/obj/item/gun/energy, /obj/item/melee/baton, /obj/item/restraints/handcuffs, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman) + allowed = list(/obj/item/gun/energy, /obj/item/melee/baton, /obj/item/restraints/handcuffs, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/tank/internals/ipc_coolant) clothing_flags = THICKMATERIAL flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT cold_protection = CHEST | GROIN | LEGS | FEET | ARMS | HANDS diff --git a/code/modules/clothing/suits/chaplainsuits.dm b/code/modules/clothing/suits/chaplainsuits.dm index 91ee5c977ca4..24fa4ed3b42b 100644 --- a/code/modules/clothing/suits/chaplainsuits.dm +++ b/code/modules/clothing/suits/chaplainsuits.dm @@ -1,10 +1,10 @@ //Chaplain Suit Subtypes //If any new staple chaplain items get added, put them in these lists /obj/item/clothing/suit/chaplainsuit - allowed = list(/obj/item/storage/book/bible, /obj/item/nullrod, /obj/item/reagent_containers/food/drinks/bottle/holywater, /obj/item/storage/box/fancy/candle_box, /obj/item/candle, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman) + allowed = list(/obj/item/storage/book/bible, /obj/item/nullrod, /obj/item/reagent_containers/food/drinks/bottle/holywater, /obj/item/storage/box/fancy/candle_box, /obj/item/candle, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/tank/internals/ipc_coolant) /obj/item/clothing/suit/hooded/chaplainsuit - allowed = list(/obj/item/storage/book/bible, /obj/item/nullrod, /obj/item/reagent_containers/food/drinks/bottle/holywater, /obj/item/storage/box/fancy/candle_box, /obj/item/candle, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman) + allowed = list(/obj/item/storage/book/bible, /obj/item/nullrod, /obj/item/reagent_containers/food/drinks/bottle/holywater, /obj/item/storage/box/fancy/candle_box, /obj/item/candle, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/tank/internals/ipc_coolant) //Suits /obj/item/clothing/suit/chaplainsuit/holidaypriest diff --git a/code/modules/clothing/suits/jobs.dm b/code/modules/clothing/suits/jobs.dm index 56e2ebd24ee6..0573a3148cee 100644 --- a/code/modules/clothing/suits/jobs.dm +++ b/code/modules/clothing/suits/jobs.dm @@ -20,7 +20,7 @@ item_state = "bio_suit" body_parts_covered = CHEST|GROIN|LEGS|ARMS flags_inv = HIDEJUMPSUIT - allowed = list(/obj/item/disk, /obj/item/stamp, /obj/item/reagent_containers/food/drinks/flask, /obj/item/melee, /obj/item/storage/lockbox/medal, /obj/item/assembly/flash/handheld, /obj/item/storage/box/matches, /obj/item/lighter, /obj/item/clothing/mask/cigarette, /obj/item/storage/box/fancy/cigarettes, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman) + allowed = list(/obj/item/disk, /obj/item/stamp, /obj/item/reagent_containers/food/drinks/flask, /obj/item/melee, /obj/item/storage/lockbox/medal, /obj/item/assembly/flash/handheld, /obj/item/storage/box/matches, /obj/item/lighter, /obj/item/clothing/mask/cigarette, /obj/item/storage/box/fancy/cigarettes, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/tank/internals/ipc_coolant) //Chef /obj/item/clothing/suit/toggle/chef @@ -92,7 +92,7 @@ icon_state = "hazard" item_state = "hazard" blood_overlay_type = "armor" - allowed = list(/obj/item/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/t_scanner, /obj/item/radio, /obj/item/extinguisher/mini) + allowed = list(/obj/item/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/tank/internals/ipc_coolant, /obj/item/t_scanner, /obj/item/radio, /obj/item/extinguisher/mini) resistance_flags = NONE //Lawyer diff --git a/code/modules/clothing/suits/labcoat.dm b/code/modules/clothing/suits/labcoat.dm index a80d062c02a9..448303372496 100644 --- a/code/modules/clothing/suits/labcoat.dm +++ b/code/modules/clothing/suits/labcoat.dm @@ -5,7 +5,7 @@ item_state = "labcoat" blood_overlay_type = "coat" body_parts_covered = CHEST|ARMS - allowed = list(/obj/item/analyzer, /obj/item/stack/medical, /obj/item/dnainjector, /obj/item/reagent_containers/dropper, /obj/item/reagent_containers/syringe, /obj/item/reagent_containers/autoinjector, /obj/item/healthanalyzer, /obj/item/flashlight/pen, /obj/item/reagent_containers/glass/bottle, /obj/item/reagent_containers/glass/beaker, /obj/item/reagent_containers/pill, /obj/item/storage/pill_bottle, /obj/item/paper, /obj/item/melee/classic_baton/telescopic, /obj/item/soap, /obj/item/sensor_device, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/hypospray) + allowed = list(/obj/item/analyzer, /obj/item/stack/medical, /obj/item/dnainjector, /obj/item/reagent_containers/dropper, /obj/item/reagent_containers/syringe, /obj/item/reagent_containers/autoinjector, /obj/item/healthanalyzer, /obj/item/flashlight/pen, /obj/item/reagent_containers/glass/bottle, /obj/item/reagent_containers/glass/beaker, /obj/item/reagent_containers/pill, /obj/item/storage/pill_bottle, /obj/item/paper, /obj/item/melee/classic_baton/telescopic, /obj/item/soap, /obj/item/sensor_device, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/tank/internals/ipc_coolant, /obj/item/hypospray) armor = list(MELEE = 0, BULLET = 0, LASER = 0,ENERGY = 0, BOMB = 0, BIO = 50, RAD = 0, FIRE = 50, ACID = 50) togglename = "buttons" species_exception = list(/datum/species/golem) @@ -27,7 +27,7 @@ desc = "A dark blue jacket with reflective strips for emergency medical technicians." icon_state = "labcoat_emt" item_state = "labcoat_cmo" - allowed = list(/obj/item/analyzer, /obj/item/stack/medical, /obj/item/dnainjector, /obj/item/reagent_containers/dropper, /obj/item/reagent_containers/syringe, /obj/item/reagent_containers/autoinjector, /obj/item/healthanalyzer, /obj/item/flashlight/pen, /obj/item/reagent_containers/glass/bottle, /obj/item/reagent_containers/glass/beaker, /obj/item/reagent_containers/pill, /obj/item/storage/pill_bottle, /obj/item/paper, /obj/item/melee/classic_baton/telescopic, /obj/item/soap, /obj/item/sensor_device, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/hypospray, /obj/item/flashlight) + allowed = list(/obj/item/analyzer, /obj/item/stack/medical, /obj/item/dnainjector, /obj/item/reagent_containers/dropper, /obj/item/reagent_containers/syringe, /obj/item/reagent_containers/autoinjector, /obj/item/healthanalyzer, /obj/item/flashlight/pen, /obj/item/reagent_containers/glass/bottle, /obj/item/reagent_containers/glass/beaker, /obj/item/reagent_containers/pill, /obj/item/storage/pill_bottle, /obj/item/paper, /obj/item/melee/classic_baton/telescopic, /obj/item/soap, /obj/item/sensor_device, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/tank/internals/ipc_coolant, /obj/item/hypospray, /obj/item/flashlight) /obj/item/clothing/suit/toggle/labcoat/emt/green name = "\improper green EMT's jacket" diff --git a/code/modules/clothing/suits/miscellaneous.dm b/code/modules/clothing/suits/miscellaneous.dm index 2604a4d699de..becc4bc24d76 100644 --- a/code/modules/clothing/suits/miscellaneous.dm +++ b/code/modules/clothing/suits/miscellaneous.dm @@ -54,7 +54,7 @@ desc = "Arrrgh! A bulky coat worn by the terrors of the seas." icon_state = "pirate" item_state = "pirate" - allowed = list(/obj/item/melee/transforming/energy/sword/pirate, /obj/item/melee/cutlass, /obj/item/reagent_containers/food/drinks/bottle/rum, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman) + allowed = list(/obj/item/melee/transforming/energy/sword/pirate, /obj/item/melee/cutlass, /obj/item/reagent_containers/food/drinks/bottle/rum, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/tank/internals/ipc_coolant) /obj/item/clothing/suit/pirate/captain name = "pirate captain coat" @@ -116,7 +116,7 @@ item_state = "syndicate-black-red" desc = "A plastic replica of the Syndicate space suit. You'll look just like a real murderous Syndicate agent in this! This is a toy, it is not made for use in space!" w_class = WEIGHT_CLASS_NORMAL - allowed = list(/obj/item/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/toy) + allowed = list(/obj/item/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/tank/internals/ipc_coolant, /obj/item/toy) flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT resistance_flags = NONE @@ -275,7 +275,7 @@ body_parts_covered = CHEST|GROIN|ARMS cold_protection = CHEST|GROIN|ARMS min_cold_protection_temperature = FIRE_SUIT_MIN_TEMP_PROTECT //Space carp like space, so you should too - allowed = list(/obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/pneumatic_cannon/speargun) + allowed = list(/obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/tank/internals/ipc_coolant, /obj/item/pneumatic_cannon/speargun) hoodtype = /obj/item/clothing/head/hooded/carp_hood /obj/item/clothing/head/hooded/carp_hood @@ -406,7 +406,7 @@ desc = "Aviators not included." icon_state = "bomberjacket" item_state = "brownjsuit" - allowed = list(/obj/item/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/toy, /obj/item/storage/box/fancy/cigarettes, /obj/item/lighter, /obj/item/radio) + allowed = list(/obj/item/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/tank/internals/ipc_coolant, /obj/item/toy, /obj/item/storage/box/fancy/cigarettes, /obj/item/lighter, /obj/item/radio) body_parts_covered = CHEST|GROIN|ARMS cold_protection = CHEST|GROIN|ARMS min_cold_protection_temperature = FIRE_SUIT_MIN_TEMP_PROTECT @@ -418,7 +418,7 @@ item_state = "hostrench" resistance_flags = NONE max_heat_protection_temperature = ARMOR_MAX_TEMP_PROTECT - allowed = list(/obj/item/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/toy, /obj/item/storage/box/fancy/cigarettes, /obj/item/lighter, /obj/item/gun/ballistic/automatic/pistol, /obj/item/gun/ballistic/revolver, /obj/item/gun/ballistic/revolver/detective, /obj/item/radio) + allowed = list(/obj/item/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/tank/internals/ipc_coolant, /obj/item/toy, /obj/item/storage/box/fancy/cigarettes, /obj/item/lighter, /obj/item/gun/ballistic/automatic/pistol, /obj/item/gun/ballistic/revolver, /obj/item/gun/ballistic/revolver/detective, /obj/item/radio) /obj/item/clothing/suit/jacket/leather/overcoat name = "leather overcoat" @@ -448,7 +448,7 @@ desc = "A canvas jacket styled after classical American military garb. Feels sturdy, yet comfortable." icon_state = "militaryjacket" item_state = "militaryjacket" - allowed = list(/obj/item/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/toy, /obj/item/storage/box/fancy/cigarettes, /obj/item/lighter, /obj/item/gun/ballistic/automatic/pistol, /obj/item/gun/ballistic/revolver, /obj/item/radio) + allowed = list(/obj/item/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/tank/internals/ipc_coolant, /obj/item/toy, /obj/item/storage/box/fancy/cigarettes, /obj/item/lighter, /obj/item/gun/ballistic/automatic/pistol, /obj/item/gun/ballistic/revolver, /obj/item/radio) /obj/item/clothing/suit/jacket/letterman name = "letterman jacket" @@ -536,7 +536,7 @@ cold_protection = CHEST|GROIN|ARMS min_cold_protection_temperature = FIRE_SUIT_MIN_TEMP_PROTECT armor = list(MELEE = 0, BULLET = 0, LASER = 0,ENERGY = 0, BOMB = 0, BIO = 10, RAD = 0, FIRE = 0, ACID = 0) - allowed = list(/obj/item/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/toy, /obj/item/storage/box/fancy/cigarettes, /obj/item/lighter) + allowed = list(/obj/item/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/tank/internals/ipc_coolant, /obj/item/toy, /obj/item/storage/box/fancy/cigarettes, /obj/item/lighter) /obj/item/clothing/head/hooded/winterhood name = "winter hood" @@ -606,7 +606,7 @@ name = "medical winter coat" icon_state = "coatmedical" item_state = "coatmedical" - allowed = list(/obj/item/analyzer, /obj/item/sensor_device, /obj/item/stack/medical, /obj/item/dnainjector, /obj/item/reagent_containers/dropper, /obj/item/reagent_containers/syringe, /obj/item/reagent_containers/autoinjector, /obj/item/healthanalyzer, /obj/item/flashlight/pen, /obj/item/reagent_containers/glass/bottle, /obj/item/reagent_containers/glass/beaker, /obj/item/reagent_containers/pill, /obj/item/storage/pill_bottle, /obj/item/paper, /obj/item/melee/classic_baton/telescopic, /obj/item/toy, /obj/item/storage/box/fancy/cigarettes, /obj/item/lighter, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman) + allowed = list(/obj/item/analyzer, /obj/item/sensor_device, /obj/item/stack/medical, /obj/item/dnainjector, /obj/item/reagent_containers/dropper, /obj/item/reagent_containers/syringe, /obj/item/reagent_containers/autoinjector, /obj/item/healthanalyzer, /obj/item/flashlight/pen, /obj/item/reagent_containers/glass/bottle, /obj/item/reagent_containers/glass/beaker, /obj/item/reagent_containers/pill, /obj/item/storage/pill_bottle, /obj/item/paper, /obj/item/melee/classic_baton/telescopic, /obj/item/toy, /obj/item/storage/box/fancy/cigarettes, /obj/item/lighter, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/tank/internals/ipc_coolant) armor = list(MELEE = 0, BULLET = 0, LASER = 0,ENERGY = 0, BOMB = 0, BIO = 50, RAD = 0, FIRE = 0, ACID = 45) hoodtype = /obj/item/clothing/head/hooded/winterhood/medical @@ -636,7 +636,7 @@ name = "science winter coat" icon_state = "coatscience" item_state = "coatscience" - allowed = list(/obj/item/analyzer, /obj/item/stack/medical, /obj/item/dnainjector, /obj/item/reagent_containers/dropper, /obj/item/reagent_containers/syringe, /obj/item/reagent_containers/autoinjector, /obj/item/healthanalyzer, /obj/item/flashlight/pen, /obj/item/reagent_containers/glass/bottle, /obj/item/reagent_containers/glass/beaker, /obj/item/reagent_containers/pill, /obj/item/storage/pill_bottle, /obj/item/paper, /obj/item/melee/classic_baton/telescopic, /obj/item/toy, /obj/item/storage/box/fancy/cigarettes, /obj/item/lighter, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman) + allowed = list(/obj/item/analyzer, /obj/item/stack/medical, /obj/item/dnainjector, /obj/item/reagent_containers/dropper, /obj/item/reagent_containers/syringe, /obj/item/reagent_containers/autoinjector, /obj/item/healthanalyzer, /obj/item/flashlight/pen, /obj/item/reagent_containers/glass/bottle, /obj/item/reagent_containers/glass/beaker, /obj/item/reagent_containers/pill, /obj/item/storage/pill_bottle, /obj/item/paper, /obj/item/melee/classic_baton/telescopic, /obj/item/toy, /obj/item/storage/box/fancy/cigarettes, /obj/item/lighter, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/tank/internals/ipc_coolant) armor = list(MELEE = 0, BULLET = 0, LASER = 0,ENERGY = 0, BOMB = 10, BIO = 0, RAD = 0, FIRE = 0, ACID = 0) hoodtype = /obj/item/clothing/head/hooded/winterhood/science @@ -667,7 +667,7 @@ icon_state = "coatengineer" item_state = "coatengineer" armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 20, FIRE = 30, ACID = 45) - allowed = list(/obj/item/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/t_scanner, /obj/item/construction/rcd, /obj/item/pipe_dispenser, /obj/item/toy, /obj/item/storage/box/fancy/cigarettes, /obj/item/lighter, /obj/item/extinguisher/mini) + allowed = list(/obj/item/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/tank/internals/ipc_coolant, /obj/item/t_scanner, /obj/item/construction/rcd, /obj/item/pipe_dispenser, /obj/item/toy, /obj/item/storage/box/fancy/cigarettes, /obj/item/lighter, /obj/item/extinguisher/mini) hoodtype = /obj/item/clothing/head/hooded/winterhood/engineering /obj/item/clothing/head/hooded/winterhood/engineering @@ -706,7 +706,7 @@ name = "hydroponics winter coat" icon_state = "coathydro" item_state = "coathydro" - allowed = list(/obj/item/reagent_containers/spray/plantbgone, /obj/item/plant_analyzer, /obj/item/seeds, /obj/item/reagent_containers/glass/bottle, /obj/item/cultivator, /obj/item/reagent_containers/spray/pestspray, /obj/item/hatchet, /obj/item/storage/bag/plants, /obj/item/toy, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/storage/box/fancy/cigarettes, /obj/item/lighter) + allowed = list(/obj/item/reagent_containers/spray/plantbgone, /obj/item/plant_analyzer, /obj/item/seeds, /obj/item/reagent_containers/glass/bottle, /obj/item/cultivator, /obj/item/reagent_containers/spray/pestspray, /obj/item/hatchet, /obj/item/storage/bag/plants, /obj/item/toy, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/tank/internals/ipc_coolant, /obj/item/storage/box/fancy/cigarettes, /obj/item/lighter) hoodtype = /obj/item/clothing/head/hooded/winterhood/hydro /obj/item/clothing/head/hooded/winterhood/hydro @@ -725,7 +725,7 @@ name = "mining winter coat" icon_state = "coatminer" item_state = "coatminer" - allowed = list(/obj/item/pickaxe, /obj/item/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/toy, /obj/item/storage/box/fancy/cigarettes, /obj/item/lighter) + allowed = list(/obj/item/pickaxe, /obj/item/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/tank/internals/ipc_coolant, /obj/item/toy, /obj/item/storage/box/fancy/cigarettes, /obj/item/lighter) armor = list(MELEE = 10, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 0, ACID = 0) hoodtype = /obj/item/clothing/head/hooded/winterhood/miner diff --git a/code/modules/clothing/suits/utility.dm b/code/modules/clothing/suits/utility.dm index 46ef2587b6ee..1d986877aa6c 100644 --- a/code/modules/clothing/suits/utility.dm +++ b/code/modules/clothing/suits/utility.dm @@ -146,7 +146,7 @@ permeability_coefficient = 0.5 clothing_flags = THICKMATERIAL body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS - allowed = list(/obj/item/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/geiger_counter) + allowed = list(/obj/item/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/tank/internals/ipc_coolant, /obj/item/geiger_counter) slowdown = 1.5 armor = list(MELEE = 5, BULLET = 5, LASER = 0,ENERGY = 0, BOMB = 5, BIO = 60, RAD = 100, FIRE = 30, ACID = 30) strip_delay = 60 diff --git a/code/modules/jobs/job_types/_job.dm b/code/modules/jobs/job_types/_job.dm index 733a2ff80666..92b710e5ad3c 100644 --- a/code/modules/jobs/job_types/_job.dm +++ b/code/modules/jobs/job_types/_job.dm @@ -202,6 +202,7 @@ back = /obj/item/storage/backpack shoes = /obj/item/clothing/shoes/sneakers/black box = /obj/item/storage/box/survival + ipc_box = /obj/item/storage/box/ipc var/obj/item/id_type = /obj/item/card/id var/obj/item/modular_computer/pda_type = /obj/item/modular_computer/tablet/pda/preset/basic @@ -239,6 +240,8 @@ if (isplasmaman(H) && !(visualsOnly)) //this is a plasmaman fix to stop having two boxes box = null + if (isipc(H) && !(visualsOnly)) // IPCs get their own box with special internals in it + box = ipc_box if((DIGITIGRADE in H.dna.species.species_traits) && digitigrade_shoes) shoes = digitigrade_shoes diff --git a/code/modules/jobs/job_types/shaft_miner.dm b/code/modules/jobs/job_types/shaft_miner.dm index 57eae32dde81..d460cb8e2d44 100644 --- a/code/modules/jobs/job_types/shaft_miner.dm +++ b/code/modules/jobs/job_types/shaft_miner.dm @@ -69,6 +69,7 @@ satchel = /obj/item/storage/backpack/satchel/explorer duffelbag = /obj/item/storage/backpack/duffelbag box = /obj/item/storage/box/survival_mining + ipc_box = /obj/item/storage/box/ipc/miner chameleon_extras = /obj/item/gun/energy/kinetic_accelerator diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index 6687633be34b..d7b802360e3c 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -105,7 +105,7 @@ if(!L) if(isipc(src)) throw_alert("not_enough_oxy", /atom/movable/screen/alert/not_enough_oxy/ipc) - adjust_bodytemperature(65, max_temp = 500) + adjust_bodytemperature(20, max_temp = 500) else if(health >= crit_threshold) adjustOxyLoss(HUMAN_MAX_OXYLOSS + 1) diff --git a/code/modules/mob/living/carbon/human/species_types/IPC.dm b/code/modules/mob/living/carbon/human/species_types/IPC.dm index d1195de91bc2..b8500e5b9e78 100644 --- a/code/modules/mob/living/carbon/human/species_types/IPC.dm +++ b/code/modules/mob/living/carbon/human/species_types/IPC.dm @@ -6,7 +6,7 @@ say_mod = "states" //inherited from a user's real species sexes = FALSE species_traits = list(NOTRANSSTING,NOEYESPRITES,NO_DNA_COPY,TRAIT_EASYDISMEMBER,ROBOTIC_LIMBS,NOZOMBIE,MUTCOLORS,NOHUSK,AGENDER,NOBLOOD) - inherent_traits = list(TRAIT_RESISTCOLD,TRAIT_RADIMMUNE,TRAIT_LIMBATTACHMENT,TRAIT_NOCRITDAMAGE,TRAIT_GENELESS,TRAIT_MEDICALIGNORE,TRAIT_NOCLONE,TRAIT_TOXIMMUNE,TRAIT_EASILY_WOUNDED,TRAIT_NODEFIB) + inherent_traits = list(TRAIT_RESISTCOLD,TRAIT_RADIMMUNE,TRAIT_COLDBLOODED,TRAIT_LIMBATTACHMENT,TRAIT_NOCRITDAMAGE,TRAIT_GENELESS,TRAIT_MEDICALIGNORE,TRAIT_NOCLONE,TRAIT_TOXIMMUNE,TRAIT_EASILY_WOUNDED,TRAIT_NODEFIB) inherent_biotypes = list(MOB_ROBOTIC, MOB_HUMANOID) mutant_brain = /obj/item/organ/brain/positron mutant_heart = /obj/item/organ/heart/cybernetic/ipc @@ -16,7 +16,7 @@ mutantstomach = /obj/item/organ/stomach/cell mutantears = /obj/item/organ/ears/robot mutantlungs = /obj/item/organ/lungs/ipc - mutant_organs = list(/obj/item/organ/cyberimp/arm/power_cord, /obj/item/organ/cyberimp/mouth/breathing_tube) + mutant_organs = list(/obj/item/organ/cyberimp/arm/power_cord, /obj/item/organ/cyberimp/chest/cooling_intake) mutant_bodyparts = list("ipc_screen", "ipc_antenna", "ipc_chassis") default_features = list("mcolor" = "#7D7D7D", "ipc_screen" = "Static", "ipc_antenna" = "None", "ipc_chassis" = "Morpheus Cyberkinetics(Greyscale)") meat = /obj/item/stack/sheet/plasteel{amount = 5} @@ -197,6 +197,7 @@ datum/species/ipc/on_species_loss(mob/living/carbon/C) /datum/species/ipc/spec_life(mob/living/carbon/human/H) . = ..() + if(H.oxyloss) H.setOxyLoss(0) H.losebreath = 0 diff --git a/code/modules/mob/living/carbon/life.dm b/code/modules/mob/living/carbon/life.dm index 375ca6a5c3d1..fcb169d41c70 100644 --- a/code/modules/mob/living/carbon/life.dm +++ b/code/modules/mob/living/carbon/life.dm @@ -65,7 +65,7 @@ if(L?.damage) next_breath = max(next_breath * L.get_organ_efficiency(), 1) - if((times_fired % next_breath) == 0 || failed_last_breath) + if((times_fired % next_breath) == 0 || failed_last_breath || isipc(src)) //IPCs breathe every tick to stabilize cooling breathe() //Breathe per 4 ticks if healthy, down to 1 based on lung damage, unless suffocating if(failed_last_breath) SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "suffocation", /datum/mood_event/suffocation) diff --git a/code/modules/research/designs/autolathe_designs.dm b/code/modules/research/designs/autolathe_designs.dm index 5583ac7c0343..017c4bd19a85 100644 --- a/code/modules/research/designs/autolathe_designs.dm +++ b/code/modules/research/designs/autolathe_designs.dm @@ -300,6 +300,15 @@ category = list("hacked","Miscellaneous","Equipment") departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING | DEPARTMENTAL_FLAG_CARGO +/datum/design/ipc_coolant_tank + name = "IPC Coolant Tank" + id = "ipc_coolant_tank" + build_type = AUTOLATHE | PROTOLATHE + materials = list(/datum/material/iron = 800) + build_path = /obj/item/tank/internals/ipc_coolant/empty + category = list("hacked","Miscellaneous","Equipment") + departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING | DEPARTMENTAL_FLAG_CARGO + /datum/design/metal name = "Metal" id = "metal" diff --git a/code/modules/research/techweb/all_nodes.dm b/code/modules/research/techweb/all_nodes.dm index 9e1e5f483eed..98c7c5070e39 100644 --- a/code/modules/research/techweb/all_nodes.dm +++ b/code/modules/research/techweb/all_nodes.dm @@ -155,7 +155,7 @@ design_ids = list("solarcontrol", "recharger", "powermonitor", "rped", "pacman", "adv_capacitor", "adv_scanning", "emitter", "high_cell", "adv_matter_bin", "scanner_gate", "atmosalerts", "atmos_control", "recycler", "autolathe", "high_micro_laser", "nano_mani", "mesons", "thermomachine", "rad_collector", "tesla_coil", "grounding_rod", "cell_charger", "stack_console", "stack_machine", "conveyor_belt", "conveyor_switch", - "oxygen_tank", "plasma_tank", "emergency_oxygen", "emergency_oxygen_engi", "plasmaman_tank_belt", "electrolyzer", "floorigniter", "crystallizer", "suit_storage_unit") + "oxygen_tank", "plasma_tank", "emergency_oxygen", "emergency_oxygen_engi", "plasmaman_tank_belt", "ipc_coolant_tank", "electrolyzer", "floorigniter", "crystallizer", "suit_storage_unit") research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 7500) /datum/techweb_node/adv_engi diff --git a/code/modules/surgery/organs/augments_chest.dm b/code/modules/surgery/organs/augments_chest.dm index bbb93d35e757..cab3e80be9f4 100644 --- a/code/modules/surgery/organs/augments_chest.dm +++ b/code/modules/surgery/organs/augments_chest.dm @@ -353,3 +353,10 @@ time_on += 5 owner.adjustFireLoss(5) to_chat(owner, span_danger("Your spinal implant malfunctions and you suddenly feel... wrong.")) + +/obj/item/organ/cyberimp/chest/cooling_intake + name = "cooling intake" + desc = "An external port that can intake air from the environment or coolant from a tank." + icon_state = "implant_mask" + slot = ORGAN_SLOT_BREATHING_TUBE + w_class = WEIGHT_CLASS_TINY diff --git a/code/modules/surgery/organs/lungs.dm b/code/modules/surgery/organs/lungs.dm index 956597e0504f..8f78a9234b0a 100644 --- a/code/modules/surgery/organs/lungs.dm +++ b/code/modules/surgery/organs/lungs.dm @@ -482,7 +482,7 @@ return S /obj/item/organ/lungs/ipc - name = "Cooling radiator" + name = "cooling radiator" desc = "A radiator in the shape of a lung used to exchange heat to cool down" icon_state = "lungs-c" organ_flags = ORGAN_SYNTHETIC @@ -501,37 +501,36 @@ if(COOLDOWN_FINISHED(src, last_message)) to_chat(H, span_boldwarning("Warning: Cooling subsystem offline!")) COOLDOWN_START(src, last_message, 30 SECONDS) - H.adjust_bodytemperature(65, max_temp = 500) + H.adjust_bodytemperature(40, max_temp = 500) H.failed_last_breath = TRUE return FALSE var/temperature = breath.return_temperature() for(var/id in breath.get_gases()) var/moles = breath.get_moles(id) - total_heat_capacity += GLOB.meta_gas_info[id][META_GAS_SPECIFIC_HEAT] * moles * 3.5 + total_heat_capacity += GLOB.meta_gas_info[id][META_GAS_SPECIFIC_HEAT] * moles // Normal atmos is 0.416 // 20C -> 293K // At about 50C overheating will begin // At 70C burn damage will start happening breath.remove(breath.total_moles()) // Remove as exhaust or whatever if(total_heat_capacity > 0) - var/heat_generation = (temperature + 35)/total_heat_capacity - if(heat_generation > 1000) // not dispelling enough heat + var/ipc_heat_capacity = 20 * ONE_ATMOSPHERE * BREATH_VOLUME / (R_IDEAL_GAS_EQUATION * T20C) // balanced to have an equilibrium of around 40C with one atmosphere of air at room temperature, not accounting for passive cooling/heating from the environment + var/heat_generation = 10 + ((temperature - (H.bodytemperature + 10)) * organ_efficiency * total_heat_capacity / (total_heat_capacity + ipc_heat_capacity)) // heat up by 20 kelvin while being cooled by the gas + H.adjust_bodytemperature(heat_generation, 73, 500) + if(heat_generation > 0 && H.bodytemperature > T0C+50) // not dispelling enough heat H.throw_alert("not_enough_oxy", /atom/movable/screen/alert/not_enough_oxy/ipc) if(COOLDOWN_FINISHED(src, last_message)) - to_chat(H, span_boldwarning("Warning: Cooling subsystem offline!")) + to_chat(H, span_boldwarning("Warning: System overheating!")) COOLDOWN_START(src, last_message, 30 SECONDS) - - // Every 2C is an extra temperature - H.adjust_bodytemperature((heat_generation-1000)/2, max_temp = 500) H.failed_last_breath = TRUE else H.failed_last_breath = FALSE H.clear_alert("not_enough_oxy") else // backup but should be impossible to ever run if(COOLDOWN_FINISHED(src, last_message)) - to_chat(H, span_boldwarning("Warning: Cooling subsystem offline!")) + to_chat(H, span_boldwarning("Warning: System overheating!")) COOLDOWN_START(src, last_message, 30 SECONDS) - H.adjust_bodytemperature(65, max_temp = 500) + H.adjust_bodytemperature(40, max_temp = 500) H.failed_last_breath = TRUE /obj/item/organ/lungs/plasmaman diff --git a/icons/mob/inhands/equipment/tanks_lefthand.dmi b/icons/mob/inhands/equipment/tanks_lefthand.dmi index efb9059cc7b838b244ff86bbd994cbae6d5967f7..47f9e4be647b2f8bb13aca36623df4de507c30c8 100644 GIT binary patch literal 2295 zcmYk4dpHw{8^_mkx+qbJN)wSI>S$<0##m!CHijgz66SI;GPk3Yvsjulnfv{++!M{* z)7(048!;rJa-VB#P9FjQ021bAaLlfL z{n=u_>`rxFDrZ+Ftt@O!cGdFwbpsvnC6#lydoH@3G(!UuE|*&qZK4uCsA%dp-=G}s zq9Lb`ReVy1w^ieF&@oIN>!rft_a2|j-mzq{*JaC>|EkdP1@4o4sms8niUVPS1;EtyQNb36fsLPalSMO5Xi61l4kyr0450B06pln#8?U#3~p>} zd|@2hb^Txf2mnXAcDJ{vCSG;2LY#%EsNd4Q#58S=ehA#Xa}NQ7vH=)P54rCy<$u`T zB*5ML?>+GJC3xa}0D$21gg*A6W{txKzWZ-WyVaAi_8_{VevQ4VUsu)FVMQuF0&S-M-ga>dsq&qidCzgx)R#d^ z#z<}=;X+wd(@N)*l6IvDg(}_UhE`pvoY2g>9uZyS-i|Gb@7tW|uWFzpqVcgbFzjx9 zqOm@z!L~U5*@~ANDFdq-KiBDCy-%~wE-W_3xDJ{SNd1Gjw0y-YIp5Z+aGPBG%z3mm z*>Q|bCq5U3dEhE*>vC3{)~P&ovAP!DH*jhUhG}Y18$|+ z_40!hN`{8l(&n7ZbN-62RGYK5pl$JLhQFufJ4H1;BM`F}3=$o9oyK3i#`6Z;?>{11 zvrr2<)}Y17q{s3Vi|?y*rti-bfEW^jsASV|otq%-)kQSJmUHG3f<2VwQS@4W@BbL? z&W(g%ACb?%X4VMPF+e!8zI-DiYl3Z}St_?vpV$lqdm=QOayPZdZbR}1eBv}S4hx;? zN0kKE5&|JAV%N0XV`8yW?DwDWmBZ>TZ?94M#3Ba6_AlxV8Xw)?x*@N3;aaFaM#ia* znIwDq_kbdy?XWqV)H>@t>wj9gp_U-SJyk6TO*~`EM|gMLJkVR>s{Yi_`+yprQm7;| zu{AzCN0)-DZqpbX))H#!sh;f#LB!k1+?H%v-n6vcUbfH7j9;<2=9LE&zk+-7=urq)gUw5G$+=71dzI#j>QR6jYR!N{z29l`6jbRG_~H*m1-zT zA_unqSJn?RPpR(c$6cw8f1GqJOy#}CVKWhGitXn@-yn(4;FS1B3dshm(-tR4oy>Vg z@KO&1$_4wb@}xcpir(s>EObP^DLZnuTZ}8`IVl13Bsp&;>#IVQ&oG zn4Gl>w^FT= z!e6#i3J`uARDK^2JdBQLlO)`1^Fk2e(0Fz@vUwIzy@=9TPV6VWVv&X3hMlAd4E98d%G7 zEpu|lI<5Ad#E>0exLo6DN%_pN&*>C&-|_PkKut~--!#%@P1wS3fPe*Oj})1Krp4Tb znuKg$U3r_NS>4o>bab@-#>y?juB49&wff15`Zx06K zA^QXHwaZQYKO^m|N7oWb1unlJ3X0U_(kZzq!jLaR*#T*F9qs457&%^w?+SGELeB`| zGLt2;ELD!vs2O#f0)*CY&Q@aor`0GTqk+ZjDGoME2b1PR%-b}>{Z;wt=2B_ybGgjh zc3x1$#6p+rmKM-5l;a`C3naD1Ky`X#*F{s$!}ocfx0Z}uCkkRHQy6WFve#va9VHx; ziv!Ytv~Vg*>A@=|O{CmSb9{K3SVV7p)dEA<>u`DjHhnvYlTGM3okB^HA6!LE` zXMfjwGn8#{a1tY6atQ^^z)d zGALR&vc=2hqAlJC>I2@p!bb5M@~M_p63Z{{(x;Z24b(I~?OK@a9LU`hK`AUK&G>0( MZi0fphTZw|KQcaeH~;_u literal 4511 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 Q@aG7isjdtEtZEzaKLaLsI{*Lx diff --git a/yogstation/code/modules/clothing/suits/armor.dm b/yogstation/code/modules/clothing/suits/armor.dm index 4300349f6900..f2922987a5d4 100644 --- a/yogstation/code/modules/clothing/suits/armor.dm +++ b/yogstation/code/modules/clothing/suits/armor.dm @@ -7,7 +7,7 @@ resistance_flags = FIRE_PROOF armor = list(MELEE = 65, BULLET = 35, LASER = 25, ENERGY = 10, BOMB = 35, BIO = 0, RAD = 0, FIRE = 50, ACID = 50) body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS - allowed = list(/obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/gun/energy/kinetic_accelerator) + allowed = list(/obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/tank/internals/ipc_coolant, /obj/item/gun/energy/kinetic_accelerator) /obj/item/clothing/suit/armor/vest/rycliesarmour name = "war armour" diff --git a/yogstation/code/modules/clothing/suits/miscellaneous.dm b/yogstation/code/modules/clothing/suits/miscellaneous.dm index 2408e95569c3..22813854c7e5 100644 --- a/yogstation/code/modules/clothing/suits/miscellaneous.dm +++ b/yogstation/code/modules/clothing/suits/miscellaneous.dm @@ -3,7 +3,7 @@ icon = 'yogstation/icons/obj/clothing/suits.dmi' name = "network admin's winter coat" icon_state = "coatsignaltech" - allowed = list(/obj/item/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/radio, /obj/item/analyzer, /obj/item/multitool, /obj/item/assembly/signaler, /obj/item/tank/internals/plasmaman) + allowed = list(/obj/item/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/radio, /obj/item/analyzer, /obj/item/multitool, /obj/item/assembly/signaler, /obj/item/tank/internals/plasmaman, /obj/item/tank/internals/ipc_coolant) hoodtype = /obj/item/clothing/head/hooded/winterhood/engineering/tcomms /obj/item/clothing/head/hooded/winterhood/engineering/tcomms @@ -26,7 +26,7 @@ icon = 'yogstation/icons/obj/clothing/suits.dmi' name = "Blue winter coat" icon_state = "coatwinterblue" - allowed = list(/obj/item/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/radio) + allowed = list(/obj/item/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/tank/internals/ipc_coolant, /obj/item/radio) hoodtype = /obj/item/clothing/head/hooded/winterhood/bluecoat /obj/item/clothing/head/hooded/winterhood/bluecoat @@ -59,7 +59,7 @@ desc = "A suit often worn by desert nomads." icon_state = "sandsuit" item_state = "sandsuit" - allowed = list(/obj/item/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/radio) + allowed = list(/obj/item/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/tank/internals/ipc_coolant, /obj/item/radio) hoodtype = /obj/item/clothing/head/hooded/sandsuit /obj/item/clothing/head/hooded/sandsuit @@ -173,21 +173,21 @@ desc = "Aviators not included. Now in dark blue!" icon_state = "navymiljacket" item_state = "navymiljacket" - allowed = list(/obj/item/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/toy, /obj/item/storage/box/fancy/cigarettes, /obj/item/lighter, /obj/item/radio) + allowed = list(/obj/item/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/tank/internals/ipc_coolant, /obj/item/toy, /obj/item/storage/box/fancy/cigarettes, /obj/item/lighter, /obj/item/radio) /obj/item/clothing/suit/yogs/desertmiljacket name = "desert military jacket" desc = "Aviators not included. Now in dark brown!" icon_state = "desertmiljacket" item_state = "desertmiljacket" - allowed = list(/obj/item/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/toy, /obj/item/storage/box/fancy/cigarettes, /obj/item/lighter, /obj/item/radio) + allowed = list(/obj/item/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/tank/internals/ipc_coolant, /obj/item/toy, /obj/item/storage/box/fancy/cigarettes, /obj/item/lighter, /obj/item/radio) /obj/item/clothing/suit/yogs/denimjacket name = "denim jacket" desc = "A bit scratchy but pretty cool looking." icon_state = "denim_jacket" item_state = "denim_jacket" - allowed = list(/obj/item/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/toy, /obj/item/storage/box/fancy/cigarettes, /obj/item/lighter, /obj/item/radio) + allowed = list(/obj/item/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/tank/internals/ipc_coolant, /obj/item/toy, /obj/item/storage/box/fancy/cigarettes, /obj/item/lighter, /obj/item/radio) /obj/item/clothing/suit/hooded/fiendcowl mob_overlay_icon = 'yogstation/icons/mob/clothing/suit/suit.dmi' @@ -196,7 +196,7 @@ desc = "Only a really evil person would wear such a fiendish cowl!" icon_state = "fiendcowl" item_state = "fiendcowl" - allowed = list(/obj/item/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/radio) + allowed = list(/obj/item/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/tank/internals/ipc_coolant, /obj/item/radio) hoodtype = /obj/item/clothing/head/hooded/fiendhood /obj/item/clothing/head/hooded/fiendhood @@ -212,7 +212,7 @@ desc = "A tattered heretical cloak from a time long passed." icon_state = "eldritchcowl" item_state = "eldritchcowl" - allowed = list(/obj/item/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/radio) + allowed = list(/obj/item/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/tank/internals/ipc_coolant, /obj/item/radio) hoodtype = /obj/item/clothing/head/hooded/eldritchhood /obj/item/clothing/head/hooded/eldritchhood @@ -234,7 +234,7 @@ desc = "Yeah, he will 'take care' of you alright." icon_state = "caretakercloak" item_state = "caretakercloak" - allowed = list(/obj/item/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/radio, /obj/item/tank/internals/plasmaman) + allowed = list(/obj/item/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/radio, /obj/item/tank/internals/plasmaman, /obj/item/tank/internals/ipc_coolant) hoodtype = /obj/item/clothing/head/hooded/caretakerhood /obj/item/clothing/head/hooded/caretakerhood @@ -294,7 +294,7 @@ desc = "It can't actually hold much, but it still looks cool!" icon_state = "soldier_webbing" item_state = "soldier_webbing" - allowed = list(/obj/item/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/radio, /obj/item/tank/internals/plasmaman) + allowed = list(/obj/item/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/radio, /obj/item/tank/internals/plasmaman, /obj/item/tank/internals/ipc_coolant) /obj/item/clothing/suit/yogs/monkrobes name = "monk robes" @@ -320,7 +320,7 @@ desc = "A hoodie...IN SPESS!!!" icon_state = "spesshoodie" item_state = "spesshoodie" - allowed = list(/obj/item/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/radio, /obj/item/tank/internals/plasmaman) + allowed = list(/obj/item/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/radio, /obj/item/tank/internals/plasmaman, /obj/item/tank/internals/ipc_coolant) hoodtype = /obj/item/clothing/head/hooded/spesshoodie /obj/item/clothing/head/hooded/spesshoodie diff --git a/yogstation/code/modules/jobs/job_types/mining_medic.dm b/yogstation/code/modules/jobs/job_types/mining_medic.dm index 1e0274ae075c..8e19ed0b2b12 100644 --- a/yogstation/code/modules/jobs/job_types/mining_medic.dm +++ b/yogstation/code/modules/jobs/job_types/mining_medic.dm @@ -55,4 +55,5 @@ satchel = /obj/item/storage/backpack/satchel/med duffelbag = /obj/item/storage/backpack/duffelbag/med box = /obj/item/storage/box/survival_mining + ipc_box = /obj/item/storage/box/ipc/miner pda_slot = SLOT_L_STORE diff --git a/yogstation/icons/obj/tank.dmi b/yogstation/icons/obj/tank.dmi index 9754ed0b8779935a5c08eb46547ffe8675eccd2d..999bdfbfb57991b759f4bf440965c1ed5327756d 100644 GIT binary patch literal 10920 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 R&?is<3UVs%Yu=fK{2!2C$Cm&A literal 10490 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 Ks(5D{{C@yt-PAh(