From 43713aebf455486ac3e1423bc79c92247b713e55 Mon Sep 17 00:00:00 2001 From: Jaraci <57604458+Jaraci@users.noreply.github.com> Date: Sat, 16 Apr 2022 20:10:14 +0100 Subject: [PATCH] Allows suit coolers to be plugged into voidsuits like gas tanks (#13409) --- .../objects/items/devices/suit_cooling.dm | 3 +- code/modules/clothing/spacesuits/void/void.dm | 65 ++++++++++++++++--- html/changelogs/omicega-fe9sfew90rfewrwe.yml | 13 ++++ 3 files changed, 71 insertions(+), 10 deletions(-) create mode 100644 html/changelogs/omicega-fe9sfew90rfewrwe.yml diff --git a/code/game/objects/items/devices/suit_cooling.dm b/code/game/objects/items/devices/suit_cooling.dm index ffcc6a23f31..1990cccdd73 100644 --- a/code/game/objects/items/devices/suit_cooling.dm +++ b/code/game/objects/items/devices/suit_cooling.dm @@ -5,6 +5,7 @@ icon = 'icons/obj/contained_items/tools/suitcooler.dmi' icon_state = "suitcooler0" item_state = "coolingpack" + action_button_name = "Toggle Cooling Unit" contained_sprite = TRUE slot_flags = SLOT_BACK //you can carry it on your back if you want, but it won't do anything unless attached to suit storage @@ -146,7 +147,7 @@ else turn_on() if(on) - to_chat(user, SPAN_NOTICE("You switch on the [src].")) + to_chat(user, SPAN_NOTICE("You switch on \the [src].")) /obj/item/device/suit_cooling_unit/attackby(obj/item/W, mob/user) if(W.isscrewdriver()) diff --git a/code/modules/clothing/spacesuits/void/void.dm b/code/modules/clothing/spacesuits/void/void.dm index c53bff8310d..892483096c4 100644 --- a/code/modules/clothing/spacesuits/void/void.dm +++ b/code/modules/clothing/spacesuits/void/void.dm @@ -87,15 +87,18 @@ var/obj/item/clothing/shoes/magboots/boots = null // Deployable boots, if any. var/obj/item/clothing/head/helmet/helmet = null // Deployable helmet, if any. var/obj/item/tank/tank = null // Deployable tank, if any. + var/obj/item/device/suit_cooling_unit/cooler = null // Deployable suit cooler, if any /obj/item/clothing/suit/space/void/examine(user) ..(user) var/list/part_list = new - for(var/obj/item/I in list(helmet,boots,tank)) + for(var/obj/item/I in list(helmet,boots,tank,cooler)) part_list += "\a [I]" to_chat(user, "\The [src] has [english_list(part_list)] installed.") if(tank && in_range(src,user)) - to_chat(user, "The wrist-mounted pressure gauge reads [max(round(tank.air_contents.return_pressure()),0)] kPa remaining in \the [tank].") + to_chat(user, SPAN_NOTICE("The wrist-mounted pressure gauge reads [max(round(tank.air_contents.return_pressure()),0)] kPa remaining in \the [tank].")) + if (cooler && in_range(src,user)) + to_chat(user, SPAN_NOTICE("The mounted cooler's battery charge reads [round(cooler.cell.percent())]%")) /obj/item/clothing/suit/space/void/refit_for_species(var/target_species) ..() @@ -133,6 +136,10 @@ to_chat(M, "The valve on your suit's installed tank safely engages.") tank.canremove = 0 + if(cooler) + if (H.equip_to_slot_if_possible(cooler, slot_s_store)) + cooler.canremove = 0 + /obj/item/clothing/suit/space/void/proc/cleanup_from_mob() var/mob/living/carbon/human/H @@ -154,6 +161,10 @@ tank.canremove = 1 tank.forceMove(src) + if(cooler) + cooler.canremove = 1 + cooler.forceMove(src) + /obj/item/clothing/suit/space/void/on_slotmove() ..() cleanup_from_mob() @@ -209,7 +220,7 @@ to_chat(usr, "There is no tank inserted.") return - to_chat(user, "You press the emergency release, ejecting \the [tank] from your suit.") + to_chat(user, SPAN_INFO("You press the emergency release lever, ejecting \the [tank] from your suit.")) tank.canremove = 1 playsound(src, 'sound/effects/air_seal.ogg', 50, 1) @@ -219,6 +230,30 @@ tank.forceMove(get_turf(src)) src.tank = null +/obj/item/clothing/suit/space/void/verb/eject_cooler() + + set name = "Eject Suit Cooler" + set category = "Object" + set src in view(1) + + var/mob/living/user = usr + + if(use_check_and_message(user)) return + + if(!cooler) + to_chat(usr, "There is no suit cooler installed.") + return + + to_chat(user, SPAN_INFO("You engage the release mechanism, ejecting \the [cooler] from your suit.")) + cooler.canremove = 1 + playsound(src, 'sound/items/Deconstruct.ogg', 30, 1) + + if(user.get_inventory_slot(src) == slot_wear_suit) + user.drop_from_inventory(cooler) + else + cooler.forceMove(get_turf(src)) + src.cooler = null + /obj/item/clothing/suit/space/void/attack_self() toggle_helmet() @@ -230,12 +265,12 @@ return ..() if(user.get_inventory_slot(src) == slot_wear_suit) - to_chat(user, "You cannot modify \the [src] while it is being worn.") + to_chat(user, SPAN_WARNING("You cannot modify \the [src] while it is being worn.")) return if(W.isscrewdriver()) - if(helmet || boots || tank) - var/choice = input("What component would you like to remove?") as null|anything in list(helmet,boots,tank) + if(helmet || boots || tank || cooler) + var/choice = input("What component would you like to remove?") as null|anything in list(helmet,boots,tank,cooler) if(!choice) return playsound(src, 'sound/items/screwdriver.ogg', 50, 1) @@ -244,13 +279,17 @@ tank.forceMove(get_turf(src)) src.tank = null else if(choice == helmet) - to_chat(user, "You detatch \the [helmet] from \the [src]'s helmet mount.") + to_chat(user, "You detach \the [helmet] from \the [src]'s helmet mount.") helmet.forceMove(get_turf(src)) src.helmet = null else if(choice == boots) - to_chat(user, "You detatch \the [boots] from \the [src]'s boot mounts.") + to_chat(user, "You detach \the [boots] from \the [src]'s boot mounts.") boots.forceMove(get_turf(src)) src.boots = null + else if (choice == cooler) + to_chat(user, "You detach \the [cooler] from \the [src]'s cooler mount.") + cooler.forceMove(get_turf(src)) + src.cooler = null else to_chat(user, "\The [src] does not have anything installed.") return @@ -283,5 +322,13 @@ user.drop_from_inventory(W,src) tank = W return - + else if (istype(W, /obj/item/device/suit_cooling_unit)) + if(cooler) + to_chat(user, "\The [src] already has a suit cooler installed.") + else + playsound(src, 'sound/items/Deconstruct.ogg', 30, 1) + to_chat(user, "You insert \the [W] into \the [src]'s storage compartment.") + user.drop_from_inventory(W,src) + cooler = W + return ..() diff --git a/html/changelogs/omicega-fe9sfew90rfewrwe.yml b/html/changelogs/omicega-fe9sfew90rfewrwe.yml new file mode 100644 index 00000000000..90e391d700e --- /dev/null +++ b/html/changelogs/omicega-fe9sfew90rfewrwe.yml @@ -0,0 +1,13 @@ +# Your name. +author: Omicega + +# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again. +delete-after: True + +# Any changes you've made. See valid prefix list above. +# INDENT WITH TWO SPACES. NOT TABS. SPACES. +# SCREW THIS UP AND IT WON'T WORK. +# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries. +# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog. +changes: + - rscadd: "Allows suit coolers to be plugged into voidsuits just like oxygen tanks. Adds an action button for them too, just like magboots."