diff --git a/code/_onclick/hud/screen_objects.dm b/code/_onclick/hud/screen_objects.dm
index 4ca8f9f5d75..ed054ae6c8a 100644
--- a/code/_onclick/hud/screen_objects.dm
+++ b/code/_onclick/hud/screen_objects.dm
@@ -276,37 +276,79 @@
C << "You are not wearing a mask."
return 1
else
- if(istype(C.l_hand, /obj/item/weapon/tank))
- C << "You are now running on internals from the [C.l_hand] on your left hand."
- C.internal = C.l_hand
- else if(istype(C.r_hand, /obj/item/weapon/tank))
- C << "You are now running on internals from the [C.r_hand] on your right hand."
- C.internal = C.r_hand
- else if(ishuman(C))
+ var/list/nicename = null
+ var/list/tankcheck = null
+ var/breathes = "oxygen" //default, we'll check later
+ var/list/contents = list()
+
+ if(ishuman(C))
var/mob/living/carbon/human/H = C
- if(istype(H.s_store, /obj/item/weapon/tank))
- H << "You are now running on internals from the [H.s_store] on your [H.wear_suit]."
- H.internal = H.s_store
- else if(istype(H.belt, /obj/item/weapon/tank))
- H << "You are now running on internals from the [H.belt] on your belt."
- H.internal = H.belt
- else if(istype(H.l_store, /obj/item/weapon/tank))
- H << "You are now running on internals from the [H.l_store] in your left pocket."
- H.internal = H.l_store
- else if(istype(H.r_store, /obj/item/weapon/tank))
- H << "You are now running on internals from the [H.r_store] in your right pocket."
- H.internal = H.r_store
+ breathes = H.species.breath_type
+ nicename = list ("suit", "back", "belt", "right hand", "left hand", "left pocket", "right pocket")
+ tankcheck = list (H.s_store, C.back, H.belt, C.r_hand, C.l_hand, H.l_store, H.r_store)
- //Seperate so CO2 jetpacks are a little less cumbersome.
- if(!C.internal && istype(C.back, /obj/item/weapon/tank))
- C << "You are now running on internals from the [C.back] on your back."
- C.internal = C.back
+ else
+ nicename = list("Right Hand", "Left Hand", "Back")
+ tankcheck = list(C.r_hand, C.l_hand, C.back)
+
+ for(var/i=1, i bestcontents)
+ best = i
+ bestcontents = contents[i]
+
+
+ //We've determined the best container now we set it as our internals
+
+ if(best)
+ C << "You are now running on internals from [tankcheck[best]] on your [nicename[best]]."
+ C.internal = tankcheck[best]
+
+
if(C.internal)
if(C.internals)
C.internals.icon_state = "internal1"
else
- C << "You don't have an oxygen tank."
+ C << "You don't have a[breathes=="oxygen" ? "n oxygen" : addtext(" ",breathes)] tank."
if("act_intent")
usr.a_intent_change("right")
if("help")
diff --git a/code/game/machinery/atmoalter/canister.dm b/code/game/machinery/atmoalter/canister.dm
index 1d5f210dd33..d8b85211501 100644
--- a/code/game/machinery/atmoalter/canister.dm
+++ b/code/game/machinery/atmoalter/canister.dm
@@ -255,6 +255,8 @@ Release Pressure: -