diff --git a/code/__defines/items_clothing.dm b/code/__defines/items_clothing.dm index bfc8969dc05..b822c4badce 100644 --- a/code/__defines/items_clothing.dm +++ b/code/__defines/items_clothing.dm @@ -29,22 +29,18 @@ #define ON_BORDER 0x8 // Item has priority to check when entering or leaving. #define NOBLOODY 0x10 // Used for items if they don't want to get a blood overlay. #define NODELAY 0x20 // 1 second attack-by delay skipped (Can be used once every 0.2s). Most objects have a 1s attack-by delay, which doesn't require a flag. +#define OPENCONTAINER 0x40 // Is an open container for chemistry purposes. +#define PHORONGUARD 0x80 // Does not get contaminated by phoron. +#define NOREACT 0x100 // Reagents don't react inside this container. #define PROXMOVE 0x200 // Does this object require proximity checking in Enter()? -//Use these flags to indicate if an item obscures the specified slots from view, whereas body_parts_covered seems to be used to indicate what body parts the item protects. -#define MASKCOVERSMOUTH 0x100 // On other items, these are just for mask/head. -#define HEADCOVERSMOUTH 0x100 - -#define OPENCONTAINER 0x800 // Is an open container for chemistry purposes. -#define PHORONGUARD 0x2000 // Does not get contaminated by phoron. -#define NOREACT 0x4000 // Reagents don't react inside this container. - //Flags for items (equipment) #define THICKMATERIAL 0x1 // Prevents syringes, parapens and hyposprays if equiped to slot_suit or slot_head. #define STOPPRESSUREDAMAGE 0x2 // Counts towards pressure protection. Note that like temperature protection, body_parts_covered is considered here as well. #define AIRTIGHT 0x4 // Functions with internals. #define NOSLIP 0x8 // Prevents from slipping on wet floors, in space, etc. #define BLOCK_GAS_SMOKE_EFFECT 0x10 // Blocks the effect that chemical clouds would have on a mob -- glasses, mask and helmets ONLY! (NOTE: flag shared with ONESIZEFITSALL) +#define FLEXIBLEMATERIAL 0x20 // At the moment, masks with this flag will not prevent eating even if they are covering your face. // Flags for pass_flags. #define PASSTABLE 0x1 diff --git a/code/game/gamemodes/cult/cult_items.dm b/code/game/gamemodes/cult/cult_items.dm index 749a959fdfd..70e2219440a 100644 --- a/code/game/gamemodes/cult/cult_items.dm +++ b/code/game/gamemodes/cult/cult_items.dm @@ -49,7 +49,6 @@ icon_state = "magus" desc = "A helm worn by the followers of Nar-Sie." flags_inv = HIDEFACE | BLOCKHAIR - flags = HEADCOVERSMOUTH body_parts_covered = HEAD|FACE|EYES /obj/item/clothing/head/culthood/alt diff --git a/code/modules/clothing/head/helmet.dm b/code/modules/clothing/head/helmet.dm index e51b6a28525..138f3fd06f3 100644 --- a/code/modules/clothing/head/helmet.dm +++ b/code/modules/clothing/head/helmet.dm @@ -49,7 +49,6 @@ name = "gladiator helmet" desc = "Ave, Imperator, morituri te salutant." icon_state = "gladiator" - flags = HEADCOVERSMOUTH flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|BLOCKHAIR body_parts_covered = HEAD|FACE siemens_coefficient = 1 diff --git a/code/modules/clothing/head/misc.dm b/code/modules/clothing/head/misc.dm index e18da419955..47740ff55e5 100644 --- a/code/modules/clothing/head/misc.dm +++ b/code/modules/clothing/head/misc.dm @@ -83,7 +83,6 @@ desc = "A large, featureless white orb mean to be worn on your head. How do you even see out of this thing?" icon_state = "cueball" item_state = "cueball" - flags = HEADCOVERSMOUTH flags_inv = BLOCKHAIR body_parts_covered = HEAD|FACE|EYES @@ -100,7 +99,6 @@ desc = "A helmet made out of a box." icon_state = "cardborg_h" item_state = "cardborg_h" - flags = HEADCOVERSMOUTH flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE body_parts_covered = HEAD|FACE|EYES @@ -108,7 +106,6 @@ name = "justice hat" desc = "fight for what's righteous!" icon_state = "justicered" - flags = HEADCOVERSMOUTH flags_inv = BLOCKHAIR body_parts_covered = HEAD|EYES diff --git a/code/modules/clothing/head/misc_special.dm b/code/modules/clothing/head/misc_special.dm index 9eba8c74364..42e830c4e48 100644 --- a/code/modules/clothing/head/misc_special.dm +++ b/code/modules/clothing/head/misc_special.dm @@ -19,7 +19,6 @@ slot_l_hand_str = "welding", slot_r_hand_str = "welding", ) - flags = HEADCOVERSMOUTH matter = list(DEFAULT_WALL_MATERIAL = 3000, "glass" = 1000) var/up = 0 armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) @@ -44,16 +43,14 @@ if(usr.canmove && !usr.stat && !usr.restrained()) if(src.up) src.up = !src.up - src.flags |= (HEADCOVERSMOUTH) - flags_inv |= (HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE) body_parts_covered |= (EYES|FACE) + flags_inv |= (HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE) icon_state = base_state usr << "You flip the [src] down to protect your eyes." else src.up = !src.up - src.flags &= ~(HEADCOVERSMOUTH) - flags_inv &= ~(HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE) body_parts_covered &= ~(EYES|FACE) + flags_inv &= ~(HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE) icon_state = "[base_state]up" usr << "You push the [src] up out of your face." update_clothing_icon() //so our mob-overlays @@ -125,7 +122,6 @@ name = "carved pumpkin" desc = "A jack o' lantern! Believed to ward off evil spirits." icon_state = "hardhat0_pumpkin"//Could stand to be renamed - flags = HEADCOVERSMOUTH flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|BLOCKHAIR body_parts_covered = HEAD|FACE|EYES brightness_on = 2 @@ -156,5 +152,4 @@ desc = "You can hear the distant sounds of rhythmic electronica." icon_state = "richard" body_parts_covered = HEAD|FACE - flags = HEADCOVERSMOUTH flags_inv = BLOCKHAIR diff --git a/code/modules/clothing/masks/breath.dm b/code/modules/clothing/masks/breath.dm index 6d38d3f79fc..78bd0f21638 100644 --- a/code/modules/clothing/masks/breath.dm +++ b/code/modules/clothing/masks/breath.dm @@ -3,9 +3,8 @@ name = "breath mask" icon_state = "breath" item_state = "breath" - flags = MASKCOVERSMOUTH - item_flags = AIRTIGHT - body_parts_covered = 0 + item_flags = AIRTIGHT|FLEXIBLEMATERIAL + body_parts_covered = FACE w_class = 2 gas_transfer_coefficient = 0.10 permeability_coefficient = 0.50 @@ -21,18 +20,16 @@ if(!src.hanging) src.hanging = !src.hanging gas_transfer_coefficient = 1 //gas is now escaping to the turf and vice versa - flags &= ~(MASKCOVERSMOUTH) item_flags &= ~(AIRTIGHT) - body_parts_covered = 0 + body_parts_covered = ~(FACE) icon_state = "breathdown" user << "Your mask is now hanging on your neck." else src.hanging = !src.hanging gas_transfer_coefficient = initial(gas_transfer_coefficient) - flags |= MASKCOVERSMOUTH item_flags |= AIRTIGHT - body_parts_covered = initial(body_parts_covered) + body_parts_covered |= FACE icon_state = "breath" user << "You pull the mask up to cover your face." update_clothing_icon() @@ -52,4 +49,4 @@ name = "medical mask" icon_state = "medical" item_state = "medical" - permeability_coefficient = 0.01 \ No newline at end of file + permeability_coefficient = 0.01 diff --git a/code/modules/clothing/masks/gasmask.dm b/code/modules/clothing/masks/gasmask.dm index 4ceceb590dc..1e9b70377d3 100644 --- a/code/modules/clothing/masks/gasmask.dm +++ b/code/modules/clothing/masks/gasmask.dm @@ -2,7 +2,6 @@ name = "gas mask" desc = "A face-covering mask that can be connected to an air supply. Filters harmful gases from the air." icon_state = "gas_alt" - flags = MASKCOVERSMOUTH item_flags = BLOCK_GAS_SMOKE_EFFECT | AIRTIGHT flags_inv = HIDEEARS|HIDEEYES|HIDEFACE body_parts_covered = FACE|EYES @@ -35,7 +34,7 @@ icon_state = "plaguedoctor" item_state = "gas_mask" armor = list(melee = 0, bullet = 0, laser = 2,energy = 2, bomb = 0, bio = 90, rad = 0) - body_parts_covered = HEAD|FACE + body_parts_covered = HEAD|FACE|EYES /obj/item/clothing/mask/gas/swat name = "\improper SWAT mask" @@ -102,3 +101,4 @@ name = "owl mask" desc = "Twoooo!" icon_state = "owl" + body_parts_covered = HEAD|FACE|EYES diff --git a/code/modules/clothing/masks/miscellaneous.dm b/code/modules/clothing/masks/miscellaneous.dm index 9ca38f1fc0a..2ab911f850d 100644 --- a/code/modules/clothing/masks/miscellaneous.dm +++ b/code/modules/clothing/masks/miscellaneous.dm @@ -3,8 +3,7 @@ desc = "To stop that awful noise." icon_state = "muzzle" item_state = "muzzle" - flags = MASKCOVERSMOUTH - body_parts_covered = 0 + body_parts_covered = FACE w_class = 2 gas_transfer_coefficient = 0.90 voicechange = 1 @@ -26,8 +25,8 @@ icon_state = "sterile" item_state = "sterile" w_class = 2 - flags = MASKCOVERSMOUTH - body_parts_covered = 0 + body_parts_covered = FACE + item_flags = FLEXIBLEMATERIAL gas_transfer_coefficient = 0.90 permeability_coefficient = 0.01 armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 60, rad = 0) @@ -47,13 +46,14 @@ body_parts_covered = 0 //scarves (fit in in mask slot) - +//None of these actually have on-mob sprites... /obj/item/clothing/mask/bluescarf name = "blue neck scarf" desc = "A blue neck scarf." icon_state = "blueneckscarf" item_state = "blueneckscarf" - flags = MASKCOVERSMOUTH + body_parts_covered = FACE + item_flags = FLEXIBLEMATERIAL w_class = 2 gas_transfer_coefficient = 0.90 @@ -62,7 +62,8 @@ desc = "A red and white checkered neck scarf." icon_state = "redwhite_scarf" item_state = "redwhite_scarf" - flags = MASKCOVERSMOUTH + body_parts_covered = FACE + item_flags = FLEXIBLEMATERIAL w_class = 2 gas_transfer_coefficient = 0.90 @@ -71,7 +72,8 @@ desc = "A green neck scarf." icon_state = "green_scarf" item_state = "green_scarf" - flags = MASKCOVERSMOUTH + body_parts_covered = FACE + item_flags = FLEXIBLEMATERIAL w_class = 2 gas_transfer_coefficient = 0.90 @@ -80,7 +82,8 @@ desc = "A stealthy, dark scarf." icon_state = "ninja_scarf" item_state = "ninja_scarf" - flags = MASKCOVERSMOUTH + body_parts_covered = FACE + item_flags = FLEXIBLEMATERIAL w_class = 2 gas_transfer_coefficient = 0.90 siemens_coefficient = 0 diff --git a/code/modules/clothing/spacesuits/miscellaneous.dm b/code/modules/clothing/spacesuits/miscellaneous.dm index 5c70616c1bf..b79639dbdce 100644 --- a/code/modules/clothing/spacesuits/miscellaneous.dm +++ b/code/modules/clothing/spacesuits/miscellaneous.dm @@ -37,7 +37,6 @@ slot_r_hand_str = "syndicate-helm-black-red", ) armor = list(melee = 65, bullet = 55, laser = 35,energy = 20, bomb = 30, bio = 100, rad = 60) - flags = HEADCOVERSMOUTH item_flags = STOPPRESSUREDAMAGE | THICKMATERIAL flags_inv = BLOCKHAIR siemens_coefficient = 0.6 diff --git a/code/modules/clothing/spacesuits/rig/rig_pieces.dm b/code/modules/clothing/spacesuits/rig/rig_pieces.dm index d7f8b3f38f9..0a6b029f15a 100644 --- a/code/modules/clothing/spacesuits/rig/rig_pieces.dm +++ b/code/modules/clothing/spacesuits/rig/rig_pieces.dm @@ -4,7 +4,6 @@ /obj/item/clothing/head/helmet/space/rig name = "helmet" - flags = HEADCOVERSMOUTH item_flags = THICKMATERIAL flags_inv = HIDEEARS|HIDEEYES|HIDEFACE|BLOCKHAIR body_parts_covered = HEAD|FACE|EYES diff --git a/code/modules/clothing/spacesuits/spacesuits.dm b/code/modules/clothing/spacesuits/spacesuits.dm index 262015d4a1d..3f6525fca8d 100644 --- a/code/modules/clothing/spacesuits/spacesuits.dm +++ b/code/modules/clothing/spacesuits/spacesuits.dm @@ -6,7 +6,6 @@ name = "Space helmet" icon_state = "space" desc = "A special helmet designed for work in a hazardous, low-pressure environment." - flags = HEADCOVERSMOUTH item_flags = STOPPRESSUREDAMAGE | THICKMATERIAL | AIRTIGHT flags_inv = BLOCKHAIR item_state_slots = list( diff --git a/code/modules/clothing/suits/bio.dm b/code/modules/clothing/suits/bio.dm index 06fcd56bed9..415f8a6da6d 100644 --- a/code/modules/clothing/suits/bio.dm +++ b/code/modules/clothing/suits/bio.dm @@ -8,7 +8,6 @@ ) desc = "A hood that protects the head and face from biological comtaminants." permeability_coefficient = 0.01 - flags = HEADCOVERSMOUTH armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 20) flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|BLOCKHAIR body_parts_covered = HEAD|FACE|EYES diff --git a/code/modules/clothing/suits/utility.dm b/code/modules/clothing/suits/utility.dm index 859b7d57a9d..d7b4e87bb0f 100644 --- a/code/modules/clothing/suits/utility.dm +++ b/code/modules/clothing/suits/utility.dm @@ -47,7 +47,6 @@ name = "bomb hood" desc = "Use in case of bomb." icon_state = "bombsuit" - flags = HEADCOVERSMOUTH armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 100, bio = 0, rad = 0) flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|BLOCKHAIR body_parts_covered = HEAD|FACE|EYES @@ -86,7 +85,6 @@ name = "Radiation Hood" icon_state = "rad" desc = "A hood with radiation protective properties. Label: Made with lead, do not eat insulation" - flags = HEADCOVERSMOUTH flags_inv = BLOCKHAIR body_parts_covered = HEAD|FACE|EYES armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 60, rad = 100) diff --git a/code/modules/mob/living/carbon/human/human_attackhand.dm b/code/modules/mob/living/carbon/human/human_attackhand.dm index 8224d3e518d..d9535b106c4 100644 --- a/code/modules/mob/living/carbon/human/human_attackhand.dm +++ b/code/modules/mob/living/carbon/human/human_attackhand.dm @@ -60,10 +60,10 @@ if(!check_has_mouth()) H << "They don't have a mouth, you cannot perform CPR!" return - if((H.head && (H.head.flags & HEADCOVERSMOUTH)) || (H.wear_mask && (H.wear_mask.flags & MASKCOVERSMOUTH))) + if((H.head && (H.head.body_parts_covered & FACE)) || (H.wear_mask && (H.wear_mask.body_parts_covered & FACE))) H << "Remove your mask!" return 0 - if((head && (head.flags & HEADCOVERSMOUTH)) || (wear_mask && (wear_mask.flags & MASKCOVERSMOUTH))) + if((head && (head.body_parts_covered & FACE)) || (wear_mask && (wear_mask.body_parts_covered & FACE))) H << "Remove [src]'s mask!" return 0 diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index cdaad1c42f9..2a67aae0456 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -144,7 +144,7 @@ emp_act /mob/living/carbon/human/proc/check_mouth_coverage() var/list/protective_gear = list(head, wear_mask, wear_suit, w_uniform) for(var/obj/item/gear in protective_gear) - if(istype(gear) && (gear.body_parts_covered & FACE) && (gear.flags & (MASKCOVERSMOUTH|HEADCOVERSMOUTH))) + if(istype(gear) && (gear.body_parts_covered & FACE) && !(gear.item_flags & FLEXIBLEMATERIAL)) return gear return null diff --git a/code/modules/mob/living/carbon/human/species/xenomorphs/alien_facehugger.dm b/code/modules/mob/living/carbon/human/species/xenomorphs/alien_facehugger.dm index 187894f4471..335b5660924 100644 --- a/code/modules/mob/living/carbon/human/species/xenomorphs/alien_facehugger.dm +++ b/code/modules/mob/living/carbon/human/species/xenomorphs/alien_facehugger.dm @@ -15,7 +15,7 @@ var/const/MAX_ACTIVE_TIME = 400 icon_state = "facehugger" item_state = "facehugger" w_class = 3 //note: can be picked up by aliens unlike most other items of w_class below 4 - flags = MASKCOVERSMOUTH | PROXMOVE + flags = PROXMOVE body_parts_covered = FACE|EYES throw_range = 5 @@ -126,15 +126,6 @@ var/const/MAX_ACTIVE_TIME = 400 L.visible_message("\red \b [src] leaps at [L]'s face!") - /* Tentatively removed since huggers can't be thrown anymore - if(ishuman(L)) - var/mob/living/carbon/human/H = L - if(H.head && H.head.flags & HEADCOVERSMOUTH) - H.visible_message("\red \b [src] smashes against [H]'s [H.head]!") - Die() - return - */ - if(iscarbon(M)) var/mob/living/carbon/target = L @@ -235,6 +226,6 @@ var/const/MAX_ACTIVE_TIME = 400 if(ishuman(C)) var/mob/living/carbon/human/H = C - if(H.head && H.head.flags & HEADCOVERSMOUTH) + if(H.head && (H.head.body_parts_covered & FACE) && !(H.head.item_flags & FLEXIBLEMATERIAL)) return 0 return 1 diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm index b6cd00bc3d7..94047483f9c 100644 --- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm +++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm @@ -274,14 +274,14 @@ if(H.head.body_parts_covered & EYES) eyes_covered = 1 safe_thing = H.head - if(H.head.flags & MASKCOVERSMOUTH) + if((H.head.body_parts_covered & FACE) && !(H.head.item_flags & FLEXIBLEMATERIAL)) mouth_covered = 1 safe_thing = H.head if(H.wear_mask) if(!eyes_covered && H.wear_mask.body_parts_covered & EYES) eyes_covered = 1 safe_thing = H.wear_mask - if(!mouth_covered && H.wear_mask.flags & MASKCOVERSMOUTH) + if(!mouth_covered && (H.wear_mask.body_parts_covered & FACE) && !(H.wear_mask.item_flags & FLEXIBLEMATERIAL)) mouth_covered = 1 safe_thing = H.wear_mask if(H.glasses && H.glasses.body_parts_covered & EYES)