diff --git a/code/_globalvars/misc.dm b/code/_globalvars/misc.dm
index 6a6de9d49e0..39c76e379be 100644
--- a/code/_globalvars/misc.dm
+++ b/code/_globalvars/misc.dm
@@ -12,3 +12,4 @@ var/timezoneOffset = 0 // The difference betwen midnight (of the host computer)
// However it'd be ok to use for accessing attack logs and such too, which are even laggier.
var/fileaccess_timer = 0
+var/TAB = " "
\ No newline at end of file
diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm
index 95ca9cf0f7c..591cb3ff5cb 100644
--- a/code/modules/mob/living/carbon/human/human.dm
+++ b/code/modules/mob/living/carbon/human/human.dm
@@ -291,55 +291,96 @@
/mob/living/carbon/human/show_inv(mob/user)
user.set_machine(src)
+
var/has_breathable_mask = istype(wear_mask, /obj/item/clothing/mask)
+ var/skipgloves = 0
+ var/skipsuitstorage = 0
+ var/skipjumpsuit = 0
+ var/skipshoes = 0
+ var/skipmask = 0
+ var/skipears = 0
+ var/skipeyes = 0
+
+ //exosuits and helmets obscure what we can see
+ if(wear_suit)
+ skipgloves = wear_suit.flags_inv & HIDEGLOVES
+ skipsuitstorage = wear_suit.flags_inv & HIDESUITSTORAGE
+ skipjumpsuit = wear_suit.flags_inv & HIDEJUMPSUIT
+ skipshoes = wear_suit.flags_inv & HIDESHOES
+
+ if(head)
+ skipmask = head.flags_inv & HIDEMASK
+ skipeyes = head.flags_inv & HIDEEYES
+ skipears = head.flags_inv & HIDEEARS
+
var/dat = {"
- [name]
-
-
Mask: [(wear_mask && !(wear_mask.flags&ABSTRACT)) ? wear_mask : "Nothing"]
Left Hand: [(l_hand && !(l_hand.flags&ABSTRACT)) ? l_hand : "Nothing"]
Right Hand: [(r_hand && !(r_hand.flags&ABSTRACT)) ? r_hand : "Nothing"]
-
Gloves: [(gloves && !(gloves.flags&ABSTRACT)) ? gloves : "Nothing"]
-
Eyes: [(glasses && !(glasses.flags&ABSTRACT)) ? glasses : "Nothing"]
-
Ears: [(ears && !(ears.flags&ABSTRACT)) ? ears : "Nothing"]
Head: [(head && !(head.flags&ABSTRACT)) ? head : "Nothing"]
-
Shoes: [(shoes && !(shoes.flags&ABSTRACT)) ? shoes : "Nothing"]"}
+ "}
- dat += "
Uniform: [(w_uniform && !(w_uniform.flags&ABSTRACT)) ? w_uniform : "Nothing"]"
- if(w_uniform)
- dat += "
Belt: [(belt && !(belt.flags&ABSTRACT)) ? belt : "Nothing"]"
- if(has_breathable_mask && istype(belt, /obj/item/weapon/tank))
- dat += "
[internal ? "Disable Internals" : "Set Internals"]"
+ if(!skipmask)
+ dat += "
Mask: [(wear_mask && !(wear_mask.flags&ABSTRACT)) ? wear_mask : "Nothing"]"
+ else
+ dat += "
Mask: Obscured by [head]"
+
+ if(!skipeyes)
+ dat += "
Eyes: [(glasses && !(glasses.flags&ABSTRACT)) ? glasses : "Nothing"]"
+ else
+ dat += "
Eyes: Obscured by [head]"
+
+ if(!skipears)
+ dat += "
Ears: [(ears && !(ears.flags&ABSTRACT)) ? ears : "Nothing"]"
+ else
+ dat += "
Ears: Obscured by [head]"
dat += "
Exosuit: [(wear_suit && !(wear_suit.flags&ABSTRACT)) ? wear_suit : "Nothing"]"
- if(wear_suit)
- dat += "
Suit Storage: [(s_store && !(s_store.flags&ABSTRACT)) ? s_store : "Nothing"]"
+ if(wear_suit && !skipsuitstorage)
+ dat += "
[TAB]↳Suit Storage: [(s_store && !(s_store.flags&ABSTRACT)) ? s_store : "Nothing"]"
if(has_breathable_mask && istype(wear_suit, /obj/item/weapon/tank))
- dat += "
[internal ? "Disable Internals" : "Set Internals"]"
+ dat += "
[TAB][TAB]↳[internal ? "Disable Internals" : "Set Internals"]"
+
+ if(!skipshoes)
+ dat += "
Shoes: [(shoes && !(shoes.flags&ABSTRACT)) ? shoes : "Nothing"]"
+ else
+ dat += "
Shoes: Obscured by [wear_suit]"
+
+ if(!skipgloves)
+ dat += "
Gloves: [(gloves && !(gloves.flags&ABSTRACT)) ? gloves : "Nothing"]"
+ else
+ dat += "
Gloves: Obscured by [wear_suit]"
dat += "
Back: [(back && !(back.flags&ABSTRACT)) ? back : "Nothing"]"
if(has_breathable_mask && istype(back, /obj/item/weapon/tank))
- dat += "
[internal ? "Disable Internals" : "Set Internals"]"
+ dat += "
[TAB]↳[internal ? "Disable Internals" : "Set Internals"]"
- if(w_uniform) //we checked already, but a different place.
- dat += "
ID: [(wear_id && !(wear_id.flags&ABSTRACT)) ? wear_id : "Nothing"]"
+ if(!skipjumpsuit)
+ dat += "
Uniform: [(w_uniform && !(w_uniform.flags&ABSTRACT)) ? w_uniform : "Nothing"]"
+ if(w_uniform)
+ dat += "
[TAB]↳Belt: [(belt && !(belt.flags&ABSTRACT)) ? belt : "Nothing"]"
+ if(has_breathable_mask && istype(belt, /obj/item/weapon/tank))
+ dat += "
[TAB][TAB]↳[internal ? "Disable Internals" : "Set Internals"]"
+ dat += "
[TAB]↳Pockets: Left ([(l_store && !(l_store.flags&ABSTRACT)) ? "Full" : "Empty"])"
+ dat += " - Right ([(r_store && !(r_store.flags&ABSTRACT)) ? "Full" : "Empty"])"
+ dat += "
[TAB]↳ID: [(wear_id && !(wear_id.flags&ABSTRACT)) ? wear_id : "Nothing"]"
+ else
+ dat += "
Uniform: Obscured by [wear_suit]"
+ dat += "
"
if(handcuffed)
- dat += "
Handcuffed"
+ dat += "
Handcuffed: Remove"
if(legcuffed)
- dat += "
Legcuffed"
- if(w_uniform)
- dat += "
Left Pocket ([(l_store && !(l_store.flags&ABSTRACT)) ? "Full" : "Empty"])"
- dat += " - Right Pocket ([(r_store && !(r_store.flags&ABSTRACT)) ? "Full" : "Empty"])"
+ dat += "
Legcuffed: Remove"
dat += {"
Close
"}
- user << browse(dat, "window=mob\ref[src];size=340x480")
- onclose(user, "mob\ref[src]")
-
+ var/datum/browser/popup = new(user, "mob\ref[src]", "[src]", 340, 480)
+ popup.set_content(dat)
+ popup.open()
// called when something steps onto a human
// this could be made more general, but for now just handle mulebot