/obj/item/clothing/mask/muzzle name = "muzzle" desc = "To stop that awful noise." icon_state = "muzzle" item_state = "blindfold" flags_cover = MASKCOVERSMOUTH w_class = WEIGHT_CLASS_SMALL gas_transfer_coefficient = 0.9 equip_delay_other = 20 mutantrace_variation = STYLE_MUZZLE /obj/item/clothing/mask/muzzle/attack_paw(mob/user) if(iscarbon(user)) var/mob/living/carbon/C = user if(src == C.wear_mask) to_chat(user, "You need help taking this off!") return ..() /obj/item/clothing/mask/surgical name = "sterile mask" desc = "A sterile mask designed to help prevent the spread of diseases." icon_state = "sterile" item_state = "sterile" w_class = WEIGHT_CLASS_TINY flags_inv = HIDEFACE flags_cover = MASKCOVERSMOUTH visor_flags_inv = HIDEFACE visor_flags_cover = MASKCOVERSMOUTH gas_transfer_coefficient = 0.9 permeability_coefficient = 0.01 armor = list(MELEE = 0, BULLET = 0, LASER = 0,ENERGY = 0, BOMB = 0, BIO = 25, RAD = 0, FIRE = 0, ACID = 0) actions_types = list(/datum/action/item_action/adjust) mutantrace_variation = STYLE_MUZZLE /obj/item/clothing/mask/surgical/aesthetic name = "aesthetic sterile mask" desc = "A sterile mask designed to help prevent the spread of diseases. This one doesn't seem like it does a whole lot, somehow." flags_inv = null flags_cover = null visor_flags_inv = null visor_flags_cover = null permeability_coefficient = 1 armor = list(MELEE = 0, BULLET = 0, LASER = 0,ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 0, ACID = 0) /obj/item/clothing/mask/surgical/attack_self(mob/user) adjustmask(user) /obj/item/clothing/mask/fakemoustache name = "fake moustache" desc = "Warning: moustache is fake." icon_state = "fake-moustache" flags_inv = HIDEFACE mutantrace_variation = STYLE_MUZZLE /obj/item/clothing/mask/fakemoustache/italian name = "italian moustache" desc = "Made from authentic Italian moustache hairs. Gives the wearer an irresistable urge to gesticulate wildly." modifies_speech = TRUE /obj/item/clothing/mask/fakemoustache/italian/handle_speech(datum/source, list/speech_args) var/message = speech_args[SPEECH_MESSAGE] if(message[1] != "*") message = " [message]" var/list/italian_words = strings("italian_replacement.json", "italian") for(var/key in italian_words) var/value = italian_words[key] if(islist(value)) value = pick(value) message = replacetextEx(message, " [uppertext(key)]", " [uppertext(value)]") message = replacetextEx(message, " [capitalize(key)]", " [capitalize(value)]") message = replacetextEx(message, " [key]", " [value]") if(prob(3)) message += pick(" Ravioli, ravioli, give me the formuoli!"," Mamma-mia!"," Mamma-mia! That's a spicy meat-ball!", " La la la la la funiculi funicula!") speech_args[SPEECH_MESSAGE] = trim(message) /obj/item/clothing/mask/joy name = "Emotional Mask" desc = "Express your happiness or hide your sorrows with this modular cutout." icon_state = "joy" clothing_flags = ALLOWINTERNALS mutantrace_variation = STYLE_MUZZLE actions_types = list(/datum/action/item_action/adjust) var/static/list/joymask_designs = list() /obj/item/clothing/mask/joy/Initialize(mapload) . = ..() joymask_designs = list( "Joy" = image(icon = src.icon, icon_state = "joy"), "Flushed" = image(icon = src.icon, icon_state = "flushed"), "Pensive" = image(icon = src.icon, icon_state = "pensive"), "Angry" = image(icon = src.icon, icon_state = "angry"), ) /obj/item/clothing/mask/joy/ui_action_click(mob/user) if(!istype(user) || user.incapacitated()) return var/static/list/options = list("Joy" = "joy", "Flushed" = "flushed", "Pensive" = "pensive","Angry" ="angry") var/choice = show_radial_menu(user, src, joymask_designs, custom_check = FALSE, radius = 36, require_near = TRUE) if(src && choice && !user.incapacitated() && in_range(user,src)) icon_state = options[choice] user.update_inv_wear_mask() for(var/X in actions) var/datum/action/A = X A.UpdateButtons() to_chat(user, "Your Joy mask now has a [choice] Emotion!") return TRUE /obj/item/clothing/mask/kitsuneblk name = "Black Kitsune Mask" desc = "An oriental styled porcelain mask, this one is black and gold." icon_state = "blackkitsunemask" item_state = "blackkitsunemask" w_class = WEIGHT_CLASS_TINY flags_cover = MASKCOVERSMOUTH flags_inv = HIDEFACE|HIDEFACIALHAIR visor_flags_inv = HIDEFACE|HIDEFACIALHAIR visor_flags_cover = MASKCOVERSMOUTH slot_flags = ITEM_SLOT_MASK /obj/item/clothing/mask/kitsuneblk/attack_self(mob/user) adjustmask(user) /obj/item/clothing/mask/kitsuneblk/AltClick(mob/user) . = ..() if(!user.canUseTopic(src, BE_CLOSE, ismonkey(user))) return adjustmask(user) return TRUE /obj/item/clothing/mask/kitsunewhi name = "White Kitsune Mask" desc = "An oriental styled porcelain mask, this one is white and red." icon_state = "whitekitsunemask" item_state = "whitekitsunemask" w_class = WEIGHT_CLASS_TINY flags_cover = MASKCOVERSMOUTH flags_inv = HIDEFACE|HIDEFACIALHAIR visor_flags_inv = HIDEFACE|HIDEFACIALHAIR visor_flags_cover = MASKCOVERSMOUTH slot_flags = ITEM_SLOT_MASK /obj/item/clothing/mask/kitsunewhi/attack_self(mob/user) adjustmask(user) /obj/item/clothing/mask/kitsunewhi/AltClick(mob/user) . = ..() if(!user.canUseTopic(src, BE_CLOSE, ismonkey(user))) return adjustmask(user) return TRUE /obj/item/clothing/mask/pig name = "pig mask" desc = "A rubber pig mask with a builtin voice modulator." icon_state = "pig" item_state = "pig" flags_inv = HIDEFACE|HIDEHAIR|HIDEFACIALHAIR clothing_flags = VOICEBOX_TOGGLABLE w_class = WEIGHT_CLASS_SMALL modifies_speech = TRUE /obj/item/clothing/mask/pig/handle_speech(datum/source, list/speech_args) if(!(clothing_flags & VOICEBOX_DISABLED)) speech_args[SPEECH_MESSAGE] = pick("Oink!","Squeeeeeeee!","Oink Oink!") /obj/item/clothing/mask/pig/cursed //needs to be different otherwise you could turn the speedmodification off and on name = "Pig face" 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. flags_inv = HIDEFACIALHAIR clothing_flags = NONE /obj/item/clothing/mask/pig/cursed/Initialize(mapload) . = ..() ADD_TRAIT(src, TRAIT_NODROP, CURSED_MASK_TRAIT) playsound(get_turf(src), 'sound/magic/pighead_curse.ogg', 50, 1) ///frog mask - reeee!! /obj/item/clothing/mask/frog name = "frog mask" desc = "An ancient mask carved in the shape of a frog.
Sanity is like gravity, all it needs is a push." icon_state = "frog" item_state = "frog" flags_inv = HIDEFACE|HIDEHAIR|HIDEFACIALHAIR w_class = WEIGHT_CLASS_SMALL clothing_flags = VOICEBOX_TOGGLABLE modifies_speech = TRUE /obj/item/clothing/mask/frog/handle_speech(datum/source, list/speech_args) //whenever you speak if(!(clothing_flags & VOICEBOX_DISABLED)) if(prob(5)) //sometimes, the angry spirit finds others words to speak. speech_args[SPEECH_MESSAGE] = pick("HUUUUU!!","SMOOOOOKIN'!!","Hello my baby, hello my honey, hello my rag-time gal.", "Feels bad, man.", "GIT DIS GUY OFF ME!!" ,"SOMEBODY STOP ME!!", "NORMIES, GET OUT!!") else speech_args[SPEECH_MESSAGE] = pick("Ree!!", "Reee!!","REEE!!","REEEEE!!") //but its usually just angry gibberish, /obj/item/clothing/mask/frog/cursed clothing_flags = NONE /obj/item/clothing/mask/frog/cursed/Initialize(mapload) . = ..() ADD_TRAIT(src, TRAIT_NODROP, CURSED_MASK_TRAIT) /obj/item/clothing/mask/frog/cursed/equipped(mob/user, slot) var/mob/living/carbon/C = user if(C.wear_mask == src && HAS_TRAIT_FROM(src, TRAIT_NODROP, CURSED_ITEM_TRAIT)) to_chat(user, "[src] was cursed! Ree!!") return ..() /obj/item/clothing/mask/cowmask name = "Cow mask with a builtin voice modulator." desc = "A rubber cow mask," icon_state = "cowmask" item_state = "cowmask" clothing_flags = VOICEBOX_TOGGLABLE flags_inv = HIDEFACE|HIDEHAIR|HIDEFACIALHAIR w_class = WEIGHT_CLASS_SMALL modifies_speech = TRUE /obj/item/clothing/mask/cowmask/handle_speech(datum/source, list/speech_args) if(!(clothing_flags & VOICEBOX_DISABLED)) speech_args[SPEECH_MESSAGE] = pick("Moooooooo!","Moo!","Moooo!") /obj/item/clothing/mask/cowmask/cursed name = "cow face" desc = "It looks like a cow mask, but closer inspection reveals it's melded onto this persons face!" flags_inv = HIDEFACIALHAIR clothing_flags = NONE /obj/item/clothing/mask/cowmask/cursed/Initialize(mapload) . = ..() ADD_TRAIT(src, TRAIT_NODROP, CURSED_MASK_TRAIT) playsound(get_turf(src), 'sound/magic/cowhead_curse.ogg', 50, 1) /obj/item/clothing/mask/horsehead name = "horse head mask" desc = "A mask made of soft vinyl and latex, representing the head of a horse." icon_state = "horsehead" item_state = "horsehead" flags_inv = HIDEFACE|HIDEHAIR|HIDEFACIALHAIR|HIDEEYES|HIDEEARS w_class = WEIGHT_CLASS_SMALL clothing_flags = VOICEBOX_TOGGLABLE /obj/item/clothing/mask/horsehead/handle_speech(datum/source, list/speech_args) if(!(clothing_flags & VOICEBOX_DISABLED)) speech_args[SPEECH_MESSAGE] = pick("NEEIIGGGHHHH!", "NEEEIIIIGHH!", "NEIIIGGHH!", "HAAWWWWW!", "HAAAWWW!") /obj/item/clothing/mask/horsehead/cursed name = "horse face" desc = "It initially looks like a mask, but it's melded into the poor person's face." clothing_flags = NONE flags_inv = HIDEFACIALHAIR /obj/item/clothing/mask/horsehead/cursed/Initialize(mapload) . = ..() ADD_TRAIT(src, TRAIT_NODROP, CURSED_MASK_TRAIT) playsound(get_turf(src), 'sound/magic/horsehead_curse.ogg', 50, 1) /obj/item/clothing/mask/rat name = "rat mask" desc = "A mask made of soft vinyl and latex, representing the head of a rat." icon_state = "rat" item_state = "rat" flags_inv = HIDEFACE flags_cover = MASKCOVERSMOUTH /obj/item/clothing/mask/rat/fox name = "fox mask" desc = "A mask made of soft vinyl and latex, representing the head of a fox." icon_state = "fox" item_state = "fox" /obj/item/clothing/mask/rat/bee name = "bee mask" desc = "A mask made of soft vinyl and latex, representing the head of a bee." icon_state = "bee" item_state = "bee" /obj/item/clothing/mask/rat/bear name = "bear mask" desc = "A mask made of soft vinyl and latex, representing the head of a bear." icon_state = "bear" item_state = "bear" /obj/item/clothing/mask/rat/bat name = "bat mask" desc = "A mask made of soft vinyl and latex, representing the head of a bat." icon_state = "bat" item_state = "bat" /obj/item/clothing/mask/rat/raven name = "raven mask" desc = "A mask made of soft vinyl and latex, representing the head of a raven." icon_state = "raven" item_state = "raven" /obj/item/clothing/mask/rat/jackal name = "jackal mask" desc = "A mask made of soft vinyl and latex, representing the head of a jackal." icon_state = "jackal" item_state = "jackal" /obj/item/clothing/mask/rat/tribal name = "tribal mask" desc = "A mask carved out of wood, detailed carefully by hand." icon_state = "bumba" item_state = "bumba" /obj/item/clothing/mask/bandana name = "botany bandana" desc = "A fine bandana with nanotech lining and a hydroponics pattern." w_class = WEIGHT_CLASS_TINY flags_cover = MASKCOVERSMOUTH flags_inv = HIDEFACE|HIDEFACIALHAIR visor_flags_inv = HIDEFACE|HIDEFACIALHAIR visor_flags_cover = MASKCOVERSMOUTH slot_flags = ITEM_SLOT_MASK adjusted_flags = ITEM_SLOT_HEAD icon_state = "bandbotany" mutantrace_variation = STYLE_MUZZLE /obj/item/clothing/mask/bandana/attack_self(mob/user) adjustmask(user) /obj/item/clothing/mask/bandana/AltClick(mob/user) . = ..() if(iscarbon(user)) var/mob/living/carbon/C = user if((C.get_item_by_slot(ITEM_SLOT_HEAD == src)) || (C.get_item_by_slot(ITEM_SLOT_MASK) == src)) to_chat(user, "You can't tie [src] while wearing it!") return if(slot_flags & ITEM_SLOT_HEAD) to_chat(user, "You must undo [src] before you can tie it into a neckerchief!") else if(user.is_holding(src)) var/obj/item/clothing/neck/neckerchief/nk = new(src) nk.name = "[name] neckerchief" nk.desc = "[desc] It's tied up like a neckerchief." nk.icon_state = icon_state nk.sourceBandanaType = src.type var/currentHandIndex = user.get_held_index_of_item(src) user.transferItemToLoc(src, null) user.put_in_hand(nk, currentHandIndex) user.visible_message("You tie [src] up like a neckerchief.", "[user] ties [src] up like a neckerchief.") qdel(src) else to_chat(user, "You must be holding [src] in order to tie it!") /obj/item/clothing/mask/bandana/red name = "red bandana" desc = "A fine red bandana with nanotech lining." icon_state = "bandred" /obj/item/clothing/mask/bandana/blue name = "blue bandana" desc = "A fine blue bandana with nanotech lining." icon_state = "bandblue" /obj/item/clothing/mask/bandana/green name = "green bandana" desc = "A fine green bandana with nanotech lining." icon_state = "bandgreen" /obj/item/clothing/mask/bandana/gold name = "gold bandana" desc = "A fine gold bandana with nanotech lining." icon_state = "bandgold" /obj/item/clothing/mask/bandana/black name = "black bandana" desc = "A fine black bandana with nanotech lining." icon_state = "bandblack" /obj/item/clothing/mask/bandana/skull name = "skull bandana" desc = "A fine black bandana with nanotech lining and a skull emblem." icon_state = "bandskull" /obj/item/clothing/mask/mummy name = "mummy mask" desc = "Ancient bandages." icon_state = "mummy_mask" item_state = "mummy_mask" flags_inv = HIDEFACE|HIDEHAIR|HIDEFACIALHAIR /obj/item/clothing/mask/scarecrow name = "sack mask" desc = "A burlap sack with eyeholes." icon_state = "scarecrow_sack" item_state = "scarecrow_sack" flags_inv = HIDEFACE|HIDEHAIR|HIDEFACIALHAIR /obj/item/clothing/mask/gondola name = "gondola mask" desc = "Genuine gondola fur." icon_state = "gondola" item_state = "gondola" flags_inv = HIDEFACE|HIDEHAIR|HIDEFACIALHAIR w_class = WEIGHT_CLASS_SMALL modifies_speech = TRUE /obj/item/clothing/mask/gondola/handle_speech(datum/source, list/speech_args) var/message = speech_args[SPEECH_MESSAGE] if(message[1] != "*") message = " [message]" var/list/spurdo_words = strings("spurdo_replacement.json", "spurdo") for(var/key in spurdo_words) var/value = spurdo_words[key] if(islist(value)) value = pick(value) message = replacetextEx(message,regex(uppertext(key),"g"), "[uppertext(value)]") message = replacetextEx(message,regex(capitalize(key),"g"), "[capitalize(value)]") message = replacetextEx(message,regex(key,"g"), "[value]") speech_args[SPEECH_MESSAGE] = trim(message) /obj/item/clothing/mask/bandana/durathread name = "durathread bandana" desc = "A bandana made from durathread, you wish it would provide some protection to its wearer, but it's far too thin..." icon_state = "banddurathread" /obj/item/clothing/mask/paper name = "paper mask" desc = "A neat, circular mask made out of paper." icon_state = "plainmask" item_state = "plainmask" flags_inv = HIDEFACE|HIDEFACIALHAIR resistance_flags = FLAMMABLE max_integrity = 100 actions_types = list(/datum/action/item_action/adjust) var/list/papermask_designs = list() /obj/item/clothing/mask/paper/Initialize(mapload) . = ..() papermask_designs = list( "Blank" = image(icon = src.icon, icon_state = "plainmask"), "Neutral" = image(icon = src.icon, icon_state = "neutralmask"), "Eyes" = image(icon = src.icon, icon_state = "eyemask"), "Sleeping" = image(icon = src.icon, icon_state = "sleepingmask"), "Heart" = image(icon = src.icon, icon_state = "heartmask"), "Core" = image(icon = src.icon, icon_state = "coremask"), "Plus" = image(icon = src.icon, icon_state = "plusmask"), "Square" = image(icon = src.icon, icon_state = "squaremask"), "Bullseye" = image(icon = src.icon, icon_state = "bullseyemask"), "Vertical" = image(icon = src.icon, icon_state = "verticalmask"), "Horizontal" = image(icon = src.icon, icon_state = "horizontalmask"), "X" = image(icon = src.icon, icon_state = "xmask"), "Bugeyes" = image(icon = src.icon, icon_state = "bugmask"), "Double" = image(icon = src.icon, icon_state = "doublemask"), "Mark" = image(icon = src.icon, icon_state = "markmask") ) /obj/item/clothing/mask/paper/ui_action_click(mob/user) if(!istype(user) || user.incapacitated()) return var/static/list/options = list("Blank" = "plainmask", "Neutral" = "neutralmask", "Eyes" = "eyemask", "Sleeping" ="sleepingmask", "Heart" = "heartmask", "Core" = "coremask", "Plus" = "plusmask", "Square" ="squaremask", "Bullseye" = "bullseyemask", "Vertical" = "verticalmask", "Horizontal" = "horizontalmask", "X" ="xmask", "Bugeyes" = "bugmask", "Double" = "doublemask", "Mark" = "markmask") var/choice = show_radial_menu(user, src, papermask_designs, custom_check = FALSE, radius = 36, require_near = TRUE) if(src && choice && !user.incapacitated() && in_range(user,src)) icon_state = options[choice] user.update_inv_wear_mask() for(var/X in actions) var/datum/action/A = X A.UpdateButtons() to_chat(user, "Your paper mask now has a [choice] symbol!") return TRUE