diff --git a/code/__DEFINES/clothing.dm b/code/__DEFINES/clothing.dm
index 2c695fbd327..76818446795 100644
--- a/code/__DEFINES/clothing.dm
+++ b/code/__DEFINES/clothing.dm
@@ -14,15 +14,16 @@
#define SLOT_DENYPOCKET 4096 //this is to deny items with a w_class of 2 or 1 to fit in pockets.
//Bit flags for the flags_inv variable, which determine when a piece of clothing hides another. IE a helmet hiding glasses.
-#define HIDEGLOVES 1 //APPLIES ONLY TO THE EXTERIOR SUIT!!
-#define HIDESUITSTORAGE 2 //APPLIES ONLY TO THE EXTERIOR SUIT!!
-#define HIDEJUMPSUIT 4 //APPLIES ONLY TO THE EXTERIOR SUIT!!
-#define HIDESHOES 8 //APPLIES ONLY TO THE EXTERIOR SUIT!!
-
-#define HIDEMASK 1 //APPLIES ONLY TO HELMETS/MASKS!!
-#define HIDEEARS 2 //APPLIES ONLY TO HELMETS/MASKS!! (ears means headsets and such)
-#define HIDEEYES 4 //APPLIES ONLY TO HELMETS/MASKS!! (eyes means glasses)
-#define HIDEFACE 8 //APPLIES ONLY TO HELMETS/MASKS!! Dictates whether we appear as unknown.
+#define HIDEGLOVES 1
+#define HIDESUITSTORAGE 2
+#define HIDEJUMPSUIT 4 //these first four are only used in exterior suits
+#define HIDESHOES 8
+#define HIDEMASK 16 //these last six are only used in masks and headgear.
+#define HIDEEARS 32 // (ears means headsets and such)
+#define HIDEEYES 64 // Whether eyes and glasses are hidden
+#define HIDEFACE 128 // Whether we appear as unknown.
+#define HIDEHAIR 256
+#define HIDEFACIALHAIR 512
//slots
#define slot_back 1
diff --git a/code/__DEFINES/flags.dm b/code/__DEFINES/flags.dm
index fcb33bd8b74..9d0840adf36 100644
--- a/code/__DEFINES/flags.dm
+++ b/code/__DEFINES/flags.dm
@@ -33,8 +33,6 @@
#define NOREACT 16384 //Reagents dont' react inside this container.
-#define BLOCKHAIR 32768 // temporarily removes the user's hair icon
-
//turf-only flags
#define NOJAUNT 1
diff --git a/code/game/gamemodes/changeling/powers/mutations.dm b/code/game/gamemodes/changeling/powers/mutations.dm
index 4640b1fe26c..371b5360aa0 100644
--- a/code/game/gamemodes/changeling/powers/mutations.dm
+++ b/code/game/gamemodes/changeling/powers/mutations.dm
@@ -298,7 +298,7 @@
name = "flesh mass"
icon_state = "lingspacehelmet"
desc = "A covering of pressure and temperature-resistant organic tissue with a glass-like chitin front."
- flags = BLOCKHAIR | STOPSPRESSUREDMAGE | NODROP //Again, no THICKMATERIAL.
+ flags = STOPSPRESSUREDMAGE | NODROP //Again, no THICKMATERIAL.
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH
@@ -348,10 +348,9 @@
name = "chitinous mass"
desc = "A tough, hard covering of black chitin with transparent chitin in front."
icon_state = "lingarmorhelmet"
- flags = BLOCKHAIR | NODROP
+ flags = NODROP
armor = list(melee = 30, bullet = 30, laser = 40, energy = 20, bomb = 10, bio = 4, rad = 0)
- flags_inv = HIDEEARS
- flags_cover = HEADCOVERSEYES
+ flags_inv = HIDEEARS|HIDEHAIR|HIDEEYES|HIDEFACIALHAIR|HIDEFACE
/obj/item/clothing/head/helmet/changeling/dropped()
qdel(src)
diff --git a/code/game/gamemodes/cult/cult_items.dm b/code/game/gamemodes/cult/cult_items.dm
index e43ab6f22e1..6c0883e0976 100644
--- a/code/game/gamemodes/cult/cult_items.dm
+++ b/code/game/gamemodes/cult/cult_items.dm
@@ -52,7 +52,7 @@
name = "ancient cultist hood"
icon_state = "culthood"
desc = "A torn, dust-caked hood. Strange letters line the inside."
- flags_inv = HIDEFACE
+ flags_inv = HIDEFACE|HIDEHAIR|HIDEEARS
flags_cover = HEADCOVERSEYES
armor = list(melee = 30, bullet = 10, laser = 5,energy = 5, bomb = 0, bio = 0, rad = 0)
cold_protection = HEAD
@@ -93,8 +93,7 @@
icon_state = "magus"
item_state = "magus"
desc = "A helm worn by the followers of Nar-Sie."
- flags_inv = HIDEFACE
- flags = BLOCKHAIR
+ flags_inv = HIDEFACE|HIDEHAIR|HIDEFACIALHAIR|HIDEEARS|HIDEEYES
armor = list(melee = 30, bullet = 30, laser = 30,energy = 20, bomb = 0, bio = 0, rad = 0)
flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH
diff --git a/code/game/gamemodes/handofgod/items.dm b/code/game/gamemodes/handofgod/items.dm
index 57658f6cdc7..71137852025 100644
--- a/code/game/gamemodes/handofgod/items.dm
+++ b/code/game/gamemodes/handofgod/items.dm
@@ -110,7 +110,7 @@
name = "Crusader's Hood"
icon_state = "crusader"
w_class = 3 //normal
- flags = BLOCKHAIR
+ flags_inv = HIDEHAIR|HIDEEARS|HIDEFACE
armor = list(melee = 50, bullet = 50, laser = 50, energy = 40, bomb = 60, bio = 0, rad = 0)
/obj/item/clothing/head/helmet/plate/crusader/blue
diff --git a/code/game/gamemodes/miniantags/abduction/abduction_gear.dm b/code/game/gamemodes/miniantags/abduction/abduction_gear.dm
index fdd8fe24778..74d1cbf3a32 100644
--- a/code/game/gamemodes/miniantags/abduction/abduction_gear.dm
+++ b/code/game/gamemodes/miniantags/abduction/abduction_gear.dm
@@ -575,6 +575,7 @@ Congratulations! You are now trained for xenobiology research!"}
item_state = "alienhelmet"
blockTracking = 1
origin_tech = "materials=6;magnets=5"
+ flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR
// Operating Table / Beds / Lockers
diff --git a/code/game/gamemodes/wizard/spellbook.dm b/code/game/gamemodes/wizard/spellbook.dm
index 4efc9d58616..5df51feb8b6 100644
--- a/code/game/gamemodes/wizard/spellbook.dm
+++ b/code/game/gamemodes/wizard/spellbook.dm
@@ -794,7 +794,7 @@
user <<"HOR-SIE HAS RISEN"
var/obj/item/clothing/mask/horsehead/magichead = new /obj/item/clothing/mask/horsehead
magichead.flags |= NODROP //curses!
- magichead.flags_inv = null //so you can still see their face
+ magichead.flags_inv &= ~HIDEFACE //so you can still see their face
magichead.voicechange = 1 //NEEEEIIGHH
if(!user.unEquip(user.wear_mask))
qdel(user.wear_mask)
diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm
index c4ecd7330cd..d8f576c911c 100644
--- a/code/modules/clothing/clothing.dm
+++ b/code/modules/clothing/clothing.dm
@@ -131,11 +131,11 @@ BLIND // can't see anything
return message
//Proc that moves gas/breath masks out of the way, disabling them and allowing pill/food consumption
-/obj/item/clothing/mask/proc/adjustmask(mob/user)
+/obj/item/clothing/mask/proc/adjustmask(mob/living/user)
if(!ignore_maskadjust)
if(user.incapacitated())
return
- if(src.mask_adjusted == 1)
+ if(mask_adjusted == 1)
src.icon_state = initial(icon_state)
gas_transfer_coefficient = initial(gas_transfer_coefficient)
permeability_coefficient = initial(permeability_coefficient)
@@ -146,7 +146,7 @@ BLIND // can't see anything
src.mask_adjusted = 0
slot_flags = initial(slot_flags)
else
- src.icon_state += "_up"
+ icon_state += "_up"
user << "You push \the [src] out of the way."
gas_transfer_coefficient = null
permeability_coefficient = null
@@ -156,7 +156,7 @@ BLIND // can't see anything
src.mask_adjusted = 1
if(adjusted_flags)
slot_flags = adjusted_flags
- usr.update_inv_wear_mask()
+ user.wear_mask_update(src, unequip = 0)
@@ -257,11 +257,11 @@ BLIND // can't see anything
name = "space helmet"
icon_state = "spaceold"
desc = "A special helmet with solar UV shielding to protect your eyes from harmful rays."
- flags = BLOCKHAIR | STOPSPRESSUREDMAGE | THICKMATERIAL
+ flags = STOPSPRESSUREDMAGE | THICKMATERIAL
item_state = "spaceold"
permeability_coefficient = 0.01
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 50)
- flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE
+ flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR
cold_protection = HEAD
min_cold_protection_temperature = SPACE_HELM_MIN_TEMP_PROTECT
heat_protection = HEAD
diff --git a/code/modules/clothing/head/hardhat.dm b/code/modules/clothing/head/hardhat.dm
index be720c2ed8f..43349c6a541 100644
--- a/code/modules/clothing/head/hardhat.dm
+++ b/code/modules/clothing/head/hardhat.dm
@@ -78,8 +78,8 @@
item_color = "atmos"
name = "atmospheric technician's firefighting helmet"
desc = "A firefighter's helmet, able to keep the user cool in any situation."
- flags = BLOCKHAIR | STOPSPRESSUREDMAGE | THICKMATERIAL
- flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE
+ flags = STOPSPRESSUREDMAGE | THICKMATERIAL
+ flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR
heat_protection = HEAD
max_heat_protection_temperature = FIRE_IMMUNITY_HELM_MAX_TEMP_PROTECT
cold_protection = HEAD
diff --git a/code/modules/clothing/head/helmet.dm b/code/modules/clothing/head/helmet.dm
index 6727996aea8..1bf81645127 100644
--- a/code/modules/clothing/head/helmet.dm
+++ b/code/modules/clothing/head/helmet.dm
@@ -5,7 +5,7 @@
flags = HEADBANGPROTECT
item_state = "helmet"
armor = list(melee = 30, bullet = 25, laser = 25,energy = 10, bomb = 25, bio = 0, rad = 0)
- flags_inv = HIDEEARS|HIDEEYES
+ flags_inv = HIDEEARS
cold_protection = HEAD
min_cold_protection_temperature = HELMET_MIN_TEMP_PROTECT
heat_protection = HEAD
@@ -41,10 +41,10 @@
can_toggle = 1
flags = HEADBANGPROTECT
armor = list(melee = 41, bullet = 15, laser = 5,energy = 5, bomb = 5, bio = 2, rad = 0)
- flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE
+ flags_inv = HIDEMASK|HIDEEARS|HIDEFACE
strip_delay = 80
action_button_name = "Toggle Helmet Visor"
- visor_flags_inv = HIDEMASK|HIDEEYES|HIDEFACE
+ visor_flags_inv = HIDEMASK|HIDEFACE
toggle_cooldown = 0
flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH
@@ -110,6 +110,7 @@
/obj/item/clothing/head/helmet/thunderdome
name = "\improper Thunderdome helmet"
desc = "'Let the battle commence!'"
+ flags_inv = HIDEEARS|HIDEHAIR
icon_state = "thunderdome"
item_state = "thunderdome"
armor = list(melee = 40, bullet = 30, laser = 25,energy = 10, bomb = 25, bio = 10, rad = 0)
@@ -122,6 +123,7 @@
/obj/item/clothing/head/helmet/roman
name = "roman helmet"
desc = "An ancient helmet made of bronze and leather."
+ flags_inv = HIDEEARS|HIDEHAIR
flags_cover = HEADCOVERSEYES
armor = list(melee = 25, bullet = 0, laser = 25, energy = 10, bomb = 10, bio = 0, rad = 0)
icon_state = "roman"
@@ -138,9 +140,8 @@
name = "gladiator helmet"
desc = "Ave, Imperator, morituri te salutant."
icon_state = "gladiator"
- flags = BLOCKHAIR
item_state = "gladiator"
- flags_inv = HIDEMASK|HIDEEARS|HIDEEYES
+ flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEHAIR
flags_cover = HEADCOVERSEYES
/obj/item/clothing/head/helmet/redtaghelm
@@ -151,7 +152,6 @@
item_state = "redtaghelm"
armor = list(melee = 15, bullet = 10, laser = 20,energy = 10, bomb = 20, bio = 0, rad = 0)
// Offer about the same protection as a hardhat.
- flags_inv = HIDEEARS|HIDEEYES
/obj/item/clothing/head/helmet/bluetaghelm
name = "blue laser tag helmet"
@@ -161,7 +161,6 @@
item_state = "bluetaghelm"
armor = list(melee = 15, bullet = 10, laser = 20,energy = 10, bomb = 20, bio = 0, rad = 0)
// Offer about the same protection as a hardhat.
- flags_inv = HIDEEARS|HIDEEYES
/obj/item/clothing/head/helmet/knight
name = "medieval helmet"
@@ -169,8 +168,8 @@
icon_state = "knight_green"
item_state = "knight_green"
armor = list(melee = 41, bullet = 15, laser = 5,energy = 5, bomb = 5, bio = 2, rad = 0)
- flags = BLOCKHAIR
- flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE
+ flags = null
+ flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR
flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH
strip_delay = 80
diff --git a/code/modules/clothing/head/jobs.dm b/code/modules/clothing/head/jobs.dm
index 662e22539d7..dca4fd52164 100644
--- a/code/modules/clothing/head/jobs.dm
+++ b/code/modules/clothing/head/jobs.dm
@@ -47,7 +47,7 @@
name = "nun hood"
desc = "Maximum piety in this star system."
icon_state = "nun_hood"
- flags = BLOCKHAIR
+ flags_inv = HIDEHAIR
flags_cover = HEADCOVERSEYES
/obj/item/clothing/head/det_hat
diff --git a/code/modules/clothing/head/misc.dm b/code/modules/clothing/head/misc.dm
index 8dd3f56aeab..e97f4c71fa2 100644
--- a/code/modules/clothing/head/misc.dm
+++ b/code/modules/clothing/head/misc.dm
@@ -47,7 +47,7 @@
name = "hastur's hood"
desc = "It's unspeakably stylish."
icon_state = "hasturhood"
- flags = BLOCKHAIR
+ flags_inv = HIDEHAIR
flags_cover = HEADCOVERSEYES
/obj/item/clothing/head/nursehat
@@ -60,8 +60,7 @@
icon_state = "syndicate-helm-black-red"
item_state = "syndicate-helm-black-red"
desc = "A plastic replica of a Syndicate agent's space helmet. You'll look just like a real murderous Syndicate agent in this! This is a toy, it is not made for use in space!"
- flags = BLOCKHAIR
- flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE
+ flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR
/obj/item/clothing/head/cardborg
name = "cardborg helmet"
@@ -69,7 +68,7 @@
icon_state = "cardborg_h"
item_state = "cardborg_h"
flags_cover = HEADCOVERSEYES
- flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE
+ flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR
/obj/item/clothing/head/snowman
name = "Snowman Head"
@@ -77,14 +76,14 @@
icon_state = "snowman_h"
item_state = "snowman_h"
flags_cover = HEADCOVERSEYES
- flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE
+ flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR
/obj/item/clothing/head/justice
name = "justice hat"
desc = "Fight for what's righteous!"
icon_state = "justicered"
item_state = "justicered"
- flags = BLOCKHAIR
+ flags_inv = HIDEHAIR|HIDEEARS|HIDEEYES|HIDEFACE|HIDEFACIALHAIR
flags_cover = HEADCOVERSEYES
/obj/item/clothing/head/justice/blue
@@ -143,23 +142,21 @@
desc = "Eeeee~heheheheheheh!"
icon_state = "witch"
item_state = "witch"
- flags = BLOCKHAIR
+ flags_inv = HIDEHAIR
/obj/item/clothing/head/chicken
name = "chicken suit head"
desc = "Bkaw!"
icon_state = "chickenhead"
item_state = "chickensuit"
- flags = BLOCKHAIR
- flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE
+ flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR
/obj/item/clothing/head/griffin
name = "griffon head"
desc = "Why not 'eagle head'? Who knows."
icon_state = "griffinhat"
item_state = "griffinhat"
- flags = BLOCKHAIR
- flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE
+ flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR
/obj/item/clothing/head/bearpelt
name = "bear pelt hat"
@@ -172,8 +169,7 @@
icon_state = "xenos"
item_state = "xenos_helm"
desc = "A helmet made out of chitinous alien hide."
- flags = BLOCKHAIR
- flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE
+ flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR
/obj/item/clothing/head/fedora
name = "fedora"
@@ -196,12 +192,14 @@
icon_state = "sombrero"
item_state = "sombrero"
desc = "You can practically taste the fiesta."
+ flags_inv = HIDEHAIR
/obj/item/clothing/head/sombrero/green
name = "green sombrero"
icon_state = "greensombrero"
item_state = "greensombrero"
desc = "As elegant as a dancing cactus."
+ flags_inv = HIDEHAIR|HIDEFACE|HIDEEARS
/obj/item/clothing/head/sombrero/shamebrero
name = "shamebrero"
@@ -245,4 +243,4 @@
/obj/item/clothing/head/lizard
name = "lizardskin cloche hat"
desc = "How many lizards died to make this hat? Not enough."
- icon_state = "lizard"
+ icon_state = "lizard"
diff --git a/code/modules/clothing/head/misc_special.dm b/code/modules/clothing/head/misc_special.dm
index d0a61f3cae9..91265c6cd01 100644
--- a/code/modules/clothing/head/misc_special.dm
+++ b/code/modules/clothing/head/misc_special.dm
@@ -48,8 +48,7 @@
icon_state = "hardhat0_cakehat"
item_state = "hardhat0_cakehat"
item_color = "cakehat"
- flags = BLOCKHAIR
- flags_inv = HIDEEARS
+ flags_inv = HIDEEARS|HIDEHAIR
action_button_name = "Toggle Candle"
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
brightness_on = 2 //luminosity when on
@@ -90,7 +89,7 @@
desc = "Perfect for winter in Siberia, da?"
icon_state = "ushankadown"
item_state = "ushankadown"
- flags_inv = HIDEEARS
+ flags_inv = HIDEEARS|HIDEHAIR
var/earflaps = 1
cold_protection = HEAD
min_cold_protection_temperature = FIRE_HELM_MIN_TEMP_PROTECT
@@ -116,8 +115,7 @@
icon_state = "hardhat0_pumpkin"
item_state = "hardhat0_pumpkin"
item_color = "pumpkin"
- flags = BLOCKHAIR
- flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE
+ flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR
action_button_name = "Toggle Pumpkin Light"
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
brightness_on = 2 //luminosity when on
diff --git a/code/modules/clothing/masks/boxing.dm b/code/modules/clothing/masks/boxing.dm
index 914fadd418c..8b537b722f6 100644
--- a/code/modules/clothing/masks/boxing.dm
+++ b/code/modules/clothing/masks/boxing.dm
@@ -3,9 +3,8 @@
desc = "LOADSAMONEY"
icon_state = "balaclava"
item_state = "balaclava"
- flags = BLOCKHAIR
- flags_inv = HIDEFACE
- visor_flags_inv = HIDEFACE
+ flags_inv = HIDEFACE|HIDEHAIR|HIDEFACIALHAIR
+ visor_flags_inv = HIDEFACE|HIDEFACIALHAIR
w_class = 2
action_button_name = "Adjust Balaclava"
ignore_maskadjust = 0
@@ -18,8 +17,7 @@
desc = "Worn by robust fighters, flying high to defeat their foes!"
icon_state = "luchag"
item_state = "luchag"
- flags = BLOCKHAIR
- flags_inv = HIDEFACE
+ flags_inv = HIDEFACE|HIDEHAIR|HIDEFACIALHAIR
w_class = 2
/obj/item/clothing/mask/luchador/speechModification(message)
diff --git a/code/modules/clothing/masks/gasmask.dm b/code/modules/clothing/masks/gasmask.dm
index 53e8fcb319e..6055104b49f 100644
--- a/code/modules/clothing/masks/gasmask.dm
+++ b/code/modules/clothing/masks/gasmask.dm
@@ -3,7 +3,7 @@
desc = "A face-covering mask that can be connected to an air supply. While good for concealing your identity, it isn't good for blocking gas flow." //More accurate
icon_state = "gas_alt"
flags = BLOCK_GAS_SMOKE_EFFECT | MASKINTERNALS
- flags_inv = HIDEEARS|HIDEEYES|HIDEFACE
+ flags_inv = HIDEEARS|HIDEEYES|HIDEFACE|HIDEFACIALHAIR
w_class = 3
item_state = "gas_alt"
gas_transfer_coefficient = 0.01
@@ -23,6 +23,7 @@
armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
origin_tech = "materials=2;engineering=2"
action_button_name = "Toggle Welding Mask"
+ flags_inv = HIDEEARS|HIDEEYES|HIDEFACE
flags_cover = MASKCOVERSEYES
visor_flags_inv = HIDEEYES
diff --git a/code/modules/clothing/masks/hailer.dm b/code/modules/clothing/masks/hailer.dm
index 788155e9d61..d35e67bde87 100644
--- a/code/modules/clothing/masks/hailer.dm
+++ b/code/modules/clothing/masks/hailer.dm
@@ -8,7 +8,7 @@
icon_state = "sechailer"
ignore_maskadjust = 0
flags = BLOCK_GAS_SMOKE_EFFECT | MASKINTERNALS
- flags_inv = HIDEFACE
+ flags_inv = HIDEFACIALHAIR|HIDEFACE
w_class = 2
visor_flags = BLOCK_GAS_SMOKE_EFFECT | MASKINTERNALS
visor_flags_inv = HIDEFACE
@@ -25,6 +25,8 @@
icon_state = "swat"
aggressiveness = 3
ignore_maskadjust = 1
+ flags_inv = HIDEFACIALHAIR|HIDEFACE|HIDEEYES|HIDEEARS
+ visor_flags_inv = 0
/obj/item/clothing/mask/gas/sechailer/cyborg
name = "security hailer"
diff --git a/code/modules/clothing/masks/miscellaneous.dm b/code/modules/clothing/masks/miscellaneous.dm
index 557163dbe97..1a6a0f006ea 100644
--- a/code/modules/clothing/masks/miscellaneous.dm
+++ b/code/modules/clothing/masks/miscellaneous.dm
@@ -45,8 +45,7 @@
desc = "A rubber pig mask."
icon_state = "pig"
item_state = "pig"
- flags = BLOCKHAIR
- flags_inv = HIDEFACE
+ flags_inv = HIDEFACE|HIDEHAIR|HIDEFACIALHAIR
w_class = 2
action_button_name = "Toggle Voice Box"
var/voicechange = 0
@@ -65,8 +64,7 @@
desc = "It looks like a mask, but closer inspection reveals it's melded onto this persons face!" //It's only ever going to be attached to your face.
icon_state = "pig"
item_state = "pig"
- flags = BLOCKHAIR
- flags_inv = HIDEFACE
+ flags_inv = HIDEFACE|HIDEHAIR|HIDEFACIALHAIR
w_class = 2
var/voicechange = 1
@@ -81,8 +79,7 @@
icon = 'icons/mob/mask.dmi'
icon_state = "cowmask"
item_state = "cowmask"
- flags = BLOCKHAIR
- flags_inv = HIDEFACE
+ flags_inv = HIDEFACE|HIDEHAIR|HIDEFACIALHAIR
w_class = 2
var/voicechange = 1
@@ -96,8 +93,7 @@
desc = "A mask made of soft vinyl and latex, representing the head of a horse."
icon_state = "horsehead"
item_state = "horsehead"
- flags = BLOCKHAIR
- flags_inv = HIDEFACE
+ flags_inv = HIDEFACE|HIDEHAIR|HIDEFACIALHAIR|HIDEEYES|HIDEEARS
w_class = 2
var/voicechange = 1
@@ -111,8 +107,8 @@
desc = "A fine bandana with nanotech lining and a hydroponics pattern."
w_class = 1
flags_cover = MASKCOVERSMOUTH
- flags_inv = HIDEFACE
- visor_flags_inv = HIDEFACE
+ flags_inv = HIDEFACE|HIDEFACIALHAIR
+ visor_flags_inv = HIDEFACE|HIDEFACIALHAIR
slot_flags = SLOT_MASK
ignore_maskadjust = 0
adjusted_flags = SLOT_HEAD
diff --git a/code/modules/clothing/spacesuits/hardsuit.dm b/code/modules/clothing/spacesuits/hardsuit.dm
index 41c1f827dfd..4c410c014c2 100644
--- a/code/modules/clothing/spacesuits/hardsuit.dm
+++ b/code/modules/clothing/spacesuits/hardsuit.dm
@@ -11,8 +11,6 @@
var/obj/item/clothing/suit/space/hardsuit/suit
item_color = "engineering" //Determines used sprites: hardsuit[on]-[color] and hardsuit[on]-[color]2 (lying down sprite)
action_button_name = "Toggle Helmet Light"
- flags = BLOCKHAIR | STOPSPRESSUREDMAGE | THICKMATERIAL
- flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH
/obj/item/clothing/head/helmet/space/hardsuit/attack_self(mob/user)
@@ -184,11 +182,11 @@
item_state = "syndie_helm"
item_color = "syndi"
armor = list(melee = 40, bullet = 50, laser = 30, energy = 15, bomb = 35, bio = 100, rad = 50)
- on = 0
+ on = 1
var/obj/item/clothing/suit/space/hardsuit/syndi/linkedsuit = null
action_button_name = "Toggle Helmet Mode"
- flags = BLOCKHAIR | STOPSPRESSUREDMAGE | THICKMATERIAL
- flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH
+ visor_flags_inv = HIDEMASK|HIDEEYES|HIDEFACE|HIDEFACIALHAIR
+ visor_flags = STOPSPRESSUREDMAGE
/obj/item/clothing/head/helmet/space/hardsuit/syndi/update_icon()
icon_state = "hardsuit[on]-[item_color]"
@@ -208,18 +206,18 @@
name = initial(name)
desc = initial(desc)
user.AddLuminosity(brightness_on)
- flags |= STOPSPRESSUREDMAGE
+ flags |= visor_flags
flags_cover |= HEADCOVERSEYES | HEADCOVERSMOUTH
- flags_inv |= HIDEMASK|HIDEEYES|HIDEFACE
+ flags_inv |= visor_flags_inv
cold_protection |= HEAD
else
user << "You switch your hardsuit to combat mode."
name += " (combat)"
desc = alt_desc
user.AddLuminosity(-brightness_on)
- flags &= ~(STOPSPRESSUREDMAGE)
+ flags &= ~visor_flags
flags_cover &= ~(HEADCOVERSEYES | HEADCOVERSMOUTH)
- flags_inv &= ~(HIDEMASK|HIDEEYES|HIDEFACE)
+ flags_inv &= ~visor_flags_inv
cold_protection &= ~HEAD
update_icon()
playsound(src.loc, 'sound/mecha/mechmove03.ogg', 50, 1)
@@ -278,6 +276,9 @@
armor = list(melee = 60, bullet = 60, laser = 50, energy = 25, bomb = 55, bio = 100, rad = 70)
heat_protection = HEAD
max_heat_protection_temperature = FIRE_IMMUNITY_SUIT_MAX_TEMP_PROTECT
+ visor_flags_inv = 0
+ visor_flags = 0
+ on = 0
/obj/item/clothing/suit/space/hardsuit/syndi/elite
@@ -300,7 +301,9 @@
icon_state = "hardsuit1-owl"
item_state = "s_helmet"
item_color = "owl"
-
+ visor_flags_inv = 0
+ visor_flags = 0
+ on = 0
/obj/item/clothing/suit/space/hardsuit/syndi/owl
name = "owl hardsuit"
@@ -346,7 +349,6 @@
item_state = "medical_helm"
item_color = "medical"
flash_protect = 0
- flags_inv = HIDEMASK|HIDEEARS|HIDEEYES
armor = list(melee = 30, bullet = 5, laser = 10, energy = 5, bomb = 10, bio = 100, rad = 50)
scan_reagents = 1
diff --git a/code/modules/clothing/spacesuits/miscellaneous.dm b/code/modules/clothing/spacesuits/miscellaneous.dm
index 0406ef99d3f..8076309af4b 100644
--- a/code/modules/clothing/spacesuits/miscellaneous.dm
+++ b/code/modules/clothing/spacesuits/miscellaneous.dm
@@ -20,7 +20,7 @@ Contains:
icon_state = "capspace"
item_state = "capspacehelmet"
desc = "A special helmet designed for only the most fashionable of military figureheads."
- flags_inv = HIDEFACE
+ flags_inv = HIDEFACE|HIDEEARS|HIDEHAIR
permeability_coefficient = 0.01
armor = list(melee = 40, bullet = 50, laser = 50, energy = 25, bomb = 50, bio = 100, rad = 50)
@@ -118,7 +118,7 @@ Contains:
name = "Santa's hat"
desc = "Ho ho ho. Merrry X-mas!"
icon_state = "santahat"
- flags = BLOCKHAIR | STOPSPRESSUREDMAGE
+ flags = STOPSPRESSUREDMAGE
flags_cover = HEADCOVERSEYES
/obj/item/clothing/suit/space/santa
@@ -138,7 +138,7 @@ Contains:
icon_state = "pirate"
item_state = "pirate"
armor = list(melee = 30, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 30, rad = 30)
- flags = BLOCKHAIR | STOPSPRESSUREDMAGE
+ flags = STOPSPRESSUREDMAGE
strip_delay = 40
put_on_delay = 20
flags_cover = HEADCOVERSEYES
@@ -165,9 +165,8 @@ Contains:
item_color = "ert_commander"
armor = list(melee = 65, bullet = 50, laser = 50, energy = 50, bomb = 50, bio = 100, rad = 100)
strip_delay = 130
- flags = BLOCKHAIR | STOPSPRESSUREDMAGE | THICKMATERIAL | NODROP
+ flags = STOPSPRESSUREDMAGE | THICKMATERIAL | NODROP
brightness_on = 7
- flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH
/obj/item/clothing/suit/space/hardsuit/ert
name = "emergency response team suit"
@@ -264,9 +263,7 @@ Contains:
armor = list(melee = -20, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 100, rad = 75) //As whimpy as a space carp
brightness_on = 0 //luminosity when on
action_button_name = ""
- flags = BLOCKHAIR | STOPSPRESSUREDMAGE | THICKMATERIAL | NODROP
- flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH
- flags_inv = HIDEEARS|HIDEEYES|HIDEFACE
+ flags = STOPSPRESSUREDMAGE | THICKMATERIAL | NODROP
/obj/item/clothing/suit/space/hardsuit/carp
diff --git a/code/modules/clothing/spacesuits/plasmamen.dm b/code/modules/clothing/spacesuits/plasmamen.dm
index ed2379260dd..fbd5b33ad73 100644
--- a/code/modules/clothing/spacesuits/plasmamen.dm
+++ b/code/modules/clothing/spacesuits/plasmamen.dm
@@ -40,8 +40,6 @@
icon_state = "plasmaman-helm"
item_color = "plasma" //needed for the helmet lighting
item_state = "plasmaman-helm"
- flags = BLOCKHAIR | STOPSPRESSUREDMAGE | THICKMATERIAL
strip_delay = 80
- flags_inv = HIDEMASK|HIDEEARS|HIDEEYES
- flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH
+
diff --git a/code/modules/clothing/suits/bio.dm b/code/modules/clothing/suits/bio.dm
index 8e98f556d81..d5d66b162c8 100644
--- a/code/modules/clothing/suits/bio.dm
+++ b/code/modules/clothing/suits/bio.dm
@@ -4,9 +4,9 @@
icon_state = "bio"
desc = "A hood that protects the head and face from biological comtaminants."
permeability_coefficient = 0.01
- flags = BLOCKHAIR|THICKMATERIAL
+ flags = THICKMATERIAL
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 20)
- flags_inv = HIDEMASK|HIDEEARS|HIDEEYES
+ flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEHAIR|HIDEFACIALHAIR|HIDEFACE
unacidable = 1
burn_state = FIRE_PROOF
flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH
diff --git a/code/modules/clothing/suits/jobs.dm b/code/modules/clothing/suits/jobs.dm
index dd112de5f44..b4444726662 100644
--- a/code/modules/clothing/suits/jobs.dm
+++ b/code/modules/clothing/suits/jobs.dm
@@ -40,6 +40,7 @@
icon_state = "chaplain_hood"
body_parts_covered = HEAD
flags = NODROP
+ flags_inv = HIDEHAIR|HIDEFACE|HIDEEARS
//Chaplain
/obj/item/clothing/suit/nun
diff --git a/code/modules/clothing/suits/miscellaneous.dm b/code/modules/clothing/suits/miscellaneous.dm
index 396b309d52d..b49823f5509 100644
--- a/code/modules/clothing/suits/miscellaneous.dm
+++ b/code/modules/clothing/suits/miscellaneous.dm
@@ -226,6 +226,7 @@
cold_protection = HEAD
min_cold_protection_temperature = FIRE_SUIT_MIN_TEMP_PROTECT
flags = NODROP
+ flags_inv = HIDEHAIR|HIDEEARS
/obj/item/clothing/suit/hooded/ian_costume //It's Ian, rub his bell- oh god what happened to his inside parts?
name = "corgi costume"
@@ -248,6 +249,7 @@
//cold_protection = HEAD
//min_cold_protection_temperature = FIRE_SUIT_MIN_TEMP_PROTECT
flags = NODROP
+ flags_inv = HIDEHAIR|HIDEEARS
/*
* Misc
@@ -357,6 +359,7 @@
cold_protection = HEAD
min_cold_protection_temperature = FIRE_SUIT_MIN_TEMP_PROTECT
flags = NODROP
+ flags_inv = HIDEHAIR|HIDEEARS
/obj/item/clothing/suit/hooded/wintercoat/captain
name = "captain's winter coat"
diff --git a/code/modules/clothing/suits/utility.dm b/code/modules/clothing/suits/utility.dm
index 04651ada905..1577418abdd 100644
--- a/code/modules/clothing/suits/utility.dm
+++ b/code/modules/clothing/suits/utility.dm
@@ -56,9 +56,9 @@
name = "bomb hood"
desc = "Use in case of bomb."
icon_state = "bombsuit"
- flags = BLOCKHAIR|THICKMATERIAL
+ flags = THICKMATERIAL
armor = list(melee = 20, bullet = 0, laser = 20,energy = 10, bomb = 100, bio = 0, rad = 0)
- flags_inv = HIDEMASK|HIDEEARS|HIDEEYES
+ flags_inv = HIDEFACE|HIDEMASK|HIDEEARS|HIDEEYES|HIDEHAIR|HIDEFACIALHAIR
cold_protection = HEAD
min_cold_protection_temperature = HELMET_MIN_TEMP_PROTECT
heat_protection = HEAD
@@ -107,7 +107,8 @@
name = "radiation hood"
icon_state = "rad"
desc = "A hood with radiation protective properties. The label reads, 'Made with lead. Please do not consume insulation.'"
- flags = BLOCKHAIR|THICKMATERIAL
+ flags = THICKMATERIAL
+ flags_inv = HIDEMASK|HIDEEARS|HIDEFACE|HIDEEYES|HIDEHAIR|HIDEFACIALHAIR
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 60, rad = 100)
strip_delay = 60
put_on_delay = 60
diff --git a/code/modules/clothing/suits/wiz_robe.dm b/code/modules/clothing/suits/wiz_robe.dm
index 54a4ce69c73..71d64ce578f 100644
--- a/code/modules/clothing/suits/wiz_robe.dm
+++ b/code/modules/clothing/suits/wiz_robe.dm
@@ -48,7 +48,7 @@
name = "Santa's hat"
desc = "Ho ho ho. Merrry X-mas!"
icon_state = "santahat"
- flags = BLOCKHAIR
+ flags_inv = HIDEHAIR|HIDEFACIALHAIR
/obj/item/clothing/suit/wizrobe
name = "wizard robe"
diff --git a/code/modules/holiday/easter.dm b/code/modules/holiday/easter.dm
index f70dbf3dee4..dc6fb60eb2f 100644
--- a/code/modules/holiday/easter.dm
+++ b/code/modules/holiday/easter.dm
@@ -91,8 +91,7 @@
item_state = "bunnyhead"
desc = "Considerably more cute than 'Frank'"
slowdown = -1
- flags = BLOCKHAIR
- flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE
+ flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR
/obj/item/clothing/suit/bunnysuit
name = "Easter Bunny Suit"
diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm
index c6ac0aa338b..11f5911c23c 100644
--- a/code/modules/mob/living/carbon/human/human.dm
+++ b/code/modules/mob/living/carbon/human/human.dm
@@ -600,6 +600,10 @@
if(head.flags_inv & HIDEEARS)
obscured |= slot_ears
+ if(wear_mask)
+ if(wear_mask.flags_inv & HIDEEYES)
+ obscured |= slot_glasses
+
if(obscured.len > 0)
return obscured
else
diff --git a/code/modules/mob/living/carbon/human/inventory.dm b/code/modules/mob/living/carbon/human/inventory.dm
index 76b7ecb4d9e..20a1005d213 100644
--- a/code/modules/mob/living/carbon/human/inventory.dm
+++ b/code/modules/mob/living/carbon/human/inventory.dm
@@ -167,16 +167,18 @@
update_inv_s_store()
/mob/living/carbon/human/wear_mask_update(obj/item/clothing/C, unequip = 1)
- if(C.flags & BLOCKHAIR)
+ if((C.flags_inv & (HIDEHAIR|HIDEFACIALHAIR)) || (initial(C.flags_inv) & (HIDEHAIR|HIDEFACIALHAIR)))
update_hair()
if(unequip && internal)
update_internals_hud_icon(0)
internal = null
+ if(C.flags_inv & HIDEEYES)
+ update_inv_glasses()
sec_hud_set_security_status()
..()
/mob/living/carbon/human/head_update(obj/item/I, forced)
- if(I.flags & BLOCKHAIR || forced)
+ if((I.flags_inv & (HIDEHAIR|HIDEFACIALHAIR)) || forced)
update_hair()
if(I.flags_inv & HIDEEYES || forced)
update_inv_glasses()
diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm
index 2b3e9b33587..7ddb6d21b0c 100644
--- a/code/modules/mob/living/carbon/human/species.dm
+++ b/code/modules/mob/living/carbon/human/species.dm
@@ -168,11 +168,23 @@
/datum/species/proc/handle_hair(mob/living/carbon/human/H, forced_colour)
H.remove_overlay(HAIR_LAYER)
-
+ if(H.disabilities & HUSK)
+ return
var/datum/sprite_accessory/S
- var/list/standing = list()
+ var/list/standing = list()
+ var/hair_hidden = 0
+ var/facialhair_hidden = 0
+ //we check if our hat or helmet hides our facial hair.
+ if(H.head)
+ var/obj/item/I = H.head
+ if(I.flags_inv & HIDEFACIALHAIR)
+ facialhair_hidden = 1
+ if(H.wear_mask)
+ var/obj/item/clothing/mask/M = H.wear_mask
+ if(M.flags_inv & HIDEFACIALHAIR)
+ facialhair_hidden = 1
- if(H.facial_hair_style && FACEHAIR in specflags)
+ if(H.facial_hair_style && (FACEHAIR in specflags) && !facialhair_hidden)
S = facial_hair_styles_list[H.facial_hair_style]
if(S)
var/image/img_facial_s
@@ -192,44 +204,46 @@
img_facial_s.alpha = hair_alpha
- standing += img_facial_s
+ standing += img_facial_s
- //Applies the debrained overlay if there is no brain
- if(!H.getorgan(/obj/item/organ/internal/brain))
- standing += image("icon"='icons/mob/human_face.dmi', "icon_state" = "debrained_s", "layer" = -HAIR_LAYER)
+ //we check if our hat or helmet hides our hair.
+ if(H.head)
+ var/obj/item/I = H.head
+ if(I.flags_inv & HIDEHAIR)
+ hair_hidden = 1
+ if(H.wear_mask)
+ var/obj/item/clothing/mask/M = H.wear_mask
+ if(M.flags_inv & HIDEHAIR)
+ hair_hidden = 1
+ if(!hair_hidden)
+ if(!H.getorgan(/obj/item/organ/internal/brain)) //Applies the debrained overlay if there is no brain
+ standing += image("icon"='icons/mob/human_face.dmi', "icon_state" = "debrained_s", "layer" = -HAIR_LAYER)
- if((H.wear_suit) && (H.wear_suit.hooded) && (H.wear_suit.suittoggled == 1))
- if(standing.len)
- H.overlays_standing[HAIR_LAYER] = standing
- H.apply_overlay(HAIR_LAYER)
- return
+ else if(H.hair_style && (HAIR in specflags))
+ S = hair_styles_list[H.hair_style]
+ if(S)
+ var/image/img_hair_s = image("icon" = S.icon, "icon_state" = "[S.icon_state]_s", "layer" = -HAIR_LAYER)
- else if(H.hair_style && HAIR in specflags)
- S = hair_styles_list[H.hair_style]
- if(S)
- var/image/img_hair_s = image("icon" = S.icon, "icon_state" = "[S.icon_state]_s", "layer" = -HAIR_LAYER)
+ img_hair_s = image("icon" = S.icon, "icon_state" = "[S.icon_state]_s", "layer" = -HAIR_LAYER)
- img_hair_s = image("icon" = S.icon, "icon_state" = "[S.icon_state]_s", "layer" = -HAIR_LAYER)
-
- if(!forced_colour)
- if(hair_color)
- if(hair_color == "mutcolor")
- img_hair_s.color = "#" + H.dna.features["mcolor"]
+ if(!forced_colour)
+ if(hair_color)
+ if(hair_color == "mutcolor")
+ img_hair_s.color = "#" + H.dna.features["mcolor"]
+ else
+ img_hair_s.color = "#" + hair_color
else
- img_hair_s.color = "#" + hair_color
+ img_hair_s.color = "#" + H.hair_color
else
- img_hair_s.color = "#" + H.hair_color
- else
- img_hair_s.color = forced_colour
- img_hair_s.alpha = hair_alpha
+ img_hair_s.color = forced_colour
+ img_hair_s.alpha = hair_alpha
- standing += img_hair_s
+ standing += img_hair_s
if(standing.len)
H.overlays_standing[HAIR_LAYER] = standing
H.apply_overlay(HAIR_LAYER)
- return
/datum/species/proc/handle_body(mob/living/carbon/human/H)
H.remove_overlay(BODY_LAYER)
@@ -328,11 +342,11 @@
bodyparts_to_add -= "frills"
if("horns" in mutant_bodyparts)
- if(!H.dna.features["horns"] || H.dna.features["horns"] == "None" || H.head && (H.head.flags & BLOCKHAIR) || (H.wear_mask && (H.wear_mask.flags & BLOCKHAIR)))
+ if(!H.dna.features["horns"] || H.dna.features["horns"] == "None" || H.head && (H.head.flags_inv & HIDEHAIR) || (H.wear_mask && (H.wear_mask.flags_inv & HIDEHAIR)))
bodyparts_to_add -= "horns"
if("ears" in mutant_bodyparts)
- if(!H.dna.features["ears"] || H.dna.features["ears"] == "None" || H.head && (H.head.flags & BLOCKHAIR) || (H.wear_mask && (H.wear_mask.flags & BLOCKHAIR)))
+ if(!H.dna.features["ears"] || H.dna.features["ears"] == "None" || H.head && (H.head.flags_inv & HIDEHAIR) || (H.wear_mask && (H.wear_mask.flags_inv & HIDEHAIR)))
bodyparts_to_add -= "ears"
if(!bodyparts_to_add)
diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm
index 282b2190c40..307632c29f6 100644
--- a/code/modules/mob/living/carbon/human/update_icons.dm
+++ b/code/modules/mob/living/carbon/human/update_icons.dm
@@ -76,15 +76,6 @@ Please contact me on #coderbus IRC. ~Carnie x
//HAIR OVERLAY
/mob/living/carbon/human/update_hair()
- //Reset our hair
- remove_overlay(HAIR_LAYER)
-
- if( (disabilities & HUSK) || (head && (head.flags & BLOCKHAIR)) || (wear_mask && (wear_mask.flags & BLOCKHAIR)) )
- return
-
- if((wear_suit) && (wear_suit.hooded) && (wear_suit.suittoggled == 1))
- return
-
dna.species.handle_hair(src)
/mob/living/carbon/human/proc/update_mutcolor()
@@ -246,7 +237,7 @@ Please contact me on #coderbus IRC. ~Carnie x
glasses.screen_loc = ui_glasses //...draw the item in the inventory screen
client.screen += glasses //Either way, add the item to the HUD
- if(!(head && (head.flags_inv & HIDEEYES)))
+ if(!(head && (head.flags_inv & HIDEEYES)) && !(wear_mask && (wear_mask.flags_inv & HIDEEYES)))
var/image/standing = glasses.build_worn_icon(state = glasses.icon_state, default_layer = GLASSES_LAYER, default_icon_file = 'icons/mob/eyes.dmi')
overlays_standing[GLASSES_LAYER] = standing
diff --git a/code/modules/mob/living/carbon/inventory.dm b/code/modules/mob/living/carbon/inventory.dm
index 41a214243e4..d32dc722d84 100644
--- a/code/modules/mob/living/carbon/inventory.dm
+++ b/code/modules/mob/living/carbon/inventory.dm
@@ -88,7 +88,10 @@
update_inv_legcuffed()
//handle stuff to update when a mob equips/unequips a mask.
-/mob/living/carbon/proc/wear_mask_update(obj/item/clothing/C, unequip = 1)
+/mob/living/proc/wear_mask_update(obj/item/clothing/C, unequip = 1)
+ update_inv_wear_mask()
+
+/mob/living/carbon/wear_mask_update(obj/item/clothing/C, unequip = 1)
if(C.tint || initial(C.tint))
update_tint()
update_inv_wear_mask()
diff --git a/code/modules/mob/living/simple_animal/friendly/drone/visuals_icons.dm b/code/modules/mob/living/simple_animal/friendly/drone/visuals_icons.dm
index 2f62aabea0c..42f8b0b0565 100644
--- a/code/modules/mob/living/simple_animal/friendly/drone/visuals_icons.dm
+++ b/code/modules/mob/living/simple_animal/friendly/drone/visuals_icons.dm
@@ -77,8 +77,10 @@
if(client && hud_used && hud_used.hud_shown)
head.screen_loc = ui_drone_head
client.screen += head
-
- var/image/head_overlay = head.build_worn_icon(state = head.icon_state, default_layer = DRONE_HEAD_LAYER, default_icon_file = 'icons/mob/head.dmi')
+ var/used_head_icon = 'icons/mob/head.dmi'
+ if(istype(head, /obj/item/clothing/mask))
+ used_head_icon = 'icons/mob/mask.dmi'
+ var/image/head_overlay = head.build_worn_icon(state = head.icon_state, default_layer = DRONE_HEAD_LAYER, default_icon_file = used_head_icon)
head_overlay.pixel_y += -15
drone_overlays[DRONE_HEAD_LAYER] = head_overlay
diff --git a/code/modules/reagents/reagent_containers/glass.dm b/code/modules/reagents/reagent_containers/glass.dm
index cdb16a8d1a3..a6b1171a6fc 100644
--- a/code/modules/reagents/reagent_containers/glass.dm
+++ b/code/modules/reagents/reagent_containers/glass.dm
@@ -262,7 +262,8 @@
amount_per_transfer_from_this = 20
possible_transfer_amounts = list(10,15,20,25,30,50,70)
volume = 70
- flags = OPENCONTAINER | BLOCKHAIR
+ flags = OPENCONTAINER
+ flags_inv = HIDEHAIR
slot_flags = SLOT_HEAD
armor = list(melee = 10, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0) //Weak melee protection, because you can wear it on your head
diff --git a/code/modules/surgery/helpers.dm b/code/modules/surgery/helpers.dm
index ca64b7b099c..a04132d1a94 100644
--- a/code/modules/surgery/helpers.dm
+++ b/code/modules/surgery/helpers.dm
@@ -81,9 +81,9 @@ proc/get_location_modifier(mob/M)
/proc/get_location_accessible(mob/M, location)
- var/covered_locations = 0 //based on body_parts_covered
- var/face_covered = 0 //based on flags_inv
- var/eyesmouth_covered = 0 //based on flags
+ var/covered_locations = 0 //based on body_parts_covered
+ var/face_covered = 0 //based on flags_inv
+ var/eyesmouth_covered = 0 //based on flags_cover
if(iscarbon(M))
var/mob/living/carbon/C = M
for(var/obj/item/clothing/I in list(C.back, C.wear_mask, C.head))
diff --git a/icons/mob/head.dmi b/icons/mob/head.dmi
index eeda81a877c..9fce23bc77c 100644
Binary files a/icons/mob/head.dmi and b/icons/mob/head.dmi differ
diff --git a/icons/mob/suit.dmi b/icons/mob/suit.dmi
index 8d570c64a2f..a68160c43fa 100644
Binary files a/icons/mob/suit.dmi and b/icons/mob/suit.dmi differ