mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-09 16:12:17 +00:00
423 lines
15 KiB
Plaintext
423 lines
15 KiB
Plaintext
/obj/item/clothing/mask/muzzle
|
|
name = "muzzle"
|
|
desc = "To stop that awful noise."
|
|
icon_state = "muzzle"
|
|
body_parts_covered = FACE
|
|
w_class = ITEMSIZE_SMALL
|
|
gas_transfer_coefficient = 0.90
|
|
voicechange = 1
|
|
|
|
/obj/item/clothing/mask/muzzle/tape
|
|
name = "length of tape"
|
|
desc = "It's a robust DIY muzzle!"
|
|
icon = 'icons/obj/bureaucracy.dmi'
|
|
icon_state = "tape_cross"
|
|
item_state_slots = list(slot_r_hand_str = null, slot_l_hand_str = null)
|
|
w_class = ITEMSIZE_TINY
|
|
|
|
/obj/item/clothing/mask/muzzle/Initialize(mapload)
|
|
. = ..()
|
|
say_messages = list("Mmfph!", "Mmmf mrrfff!", "Mmmf mnnf!")
|
|
say_verbs = list("mumbles", "says")
|
|
|
|
// Clumsy folks can't take the mask off themselves.
|
|
/obj/item/clothing/mask/muzzle/attack_hand(mob/living/user as mob)
|
|
if(user.wear_mask == src && !user.IsAdvancedToolUser())
|
|
return 0
|
|
..()
|
|
|
|
/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_slots = list(slot_r_hand_str = "sterile", slot_l_hand_str = "sterile")
|
|
w_class = ITEMSIZE_SMALL
|
|
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)
|
|
var/hanging = 0
|
|
|
|
/obj/item/clothing/mask/surgical/proc/adjust_mask(mob/user)
|
|
if(user.canmove && !user.stat)
|
|
src.hanging = !src.hanging
|
|
if (src.hanging)
|
|
gas_transfer_coefficient = 1
|
|
body_parts_covered = body_parts_covered & ~FACE
|
|
armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0)
|
|
icon_state = "steriledown"
|
|
to_chat(user, "You pull the mask below your chin.")
|
|
else
|
|
gas_transfer_coefficient = initial(gas_transfer_coefficient)
|
|
body_parts_covered = initial(body_parts_covered)
|
|
icon_state = initial(icon_state)
|
|
armor = initial(armor)
|
|
to_chat(user, "You pull the mask up to cover your face.")
|
|
update_clothing_icon()
|
|
|
|
/obj/item/clothing/mask/surgical/verb/toggle()
|
|
set category = "Object"
|
|
set name = "Adjust mask"
|
|
set src in usr
|
|
|
|
adjust_mask(usr)
|
|
|
|
/obj/item/clothing/mask/surgical/white
|
|
icon_state = "sterilew"
|
|
item_state_slots = list(slot_r_hand_str = "sterilew", slot_l_hand_str = "sterilew")
|
|
|
|
/obj/item/clothing/mask/surgical/dust
|
|
name = "dust mask"
|
|
desc = "A dust mask designed to protect the wearer against construction and/or custodial particulate."
|
|
icon_state = "dust"
|
|
item_state_slots = list(slot_r_hand_str = "dust", slot_l_hand_str = "dust")
|
|
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 30, rad = 0)
|
|
|
|
/obj/item/clothing/mask/surgical/cloth
|
|
name = "cloth mask"
|
|
desc = "A cloth mask designed to protect the wearer against allergens, illnesses, and social interaction."
|
|
icon_state = "cloth"
|
|
item_state_slots = list(slot_r_hand_str = "cloth", slot_l_hand_str = "cloth")
|
|
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 20, rad = 0)
|
|
|
|
/obj/item/clothing/mask/fakemoustache
|
|
name = "fake moustache"
|
|
desc = "Warning: moustache is fake."
|
|
icon_state = "fake-moustache"
|
|
flags_inv = HIDEFACE
|
|
body_parts_covered = 0
|
|
|
|
/obj/item/clothing/mask/snorkel
|
|
name = "Snorkel"
|
|
desc = "For the Swimming Savant."
|
|
icon_state = "snorkel"
|
|
flags_inv = HIDEFACE
|
|
body_parts_covered = 0
|
|
|
|
//scarves (fit in in mask slot)
|
|
//None of these actually have on-mob sprites...
|
|
/* //Lost to time.
|
|
/obj/item/clothing/mask/bluescarf
|
|
name = "blue neck scarf"
|
|
desc = "A blue neck scarf."
|
|
icon_state = "blueneckscarf"
|
|
body_parts_covered = FACE
|
|
item_flags = FLEXIBLEMATERIAL
|
|
w_class = ITEMSIZE_SMALL
|
|
gas_transfer_coefficient = 0.90
|
|
|
|
/obj/item/clothing/mask/redscarf
|
|
name = "red scarf"
|
|
desc = "A red and white checkered neck scarf."
|
|
icon_state = "redwhite_scarf"
|
|
body_parts_covered = FACE
|
|
item_flags = FLEXIBLEMATERIAL
|
|
w_class = ITEMSIZE_SMALL
|
|
gas_transfer_coefficient = 0.90
|
|
|
|
/obj/item/clothing/mask/greenscarf
|
|
name = "green scarf"
|
|
desc = "A green neck scarf."
|
|
icon_state = "green_scarf"
|
|
body_parts_covered = FACE
|
|
item_flags = FLEXIBLEMATERIAL
|
|
w_class = ITEMSIZE_SMALL
|
|
gas_transfer_coefficient = 0.90
|
|
*/
|
|
/obj/item/clothing/mask/ninjascarf
|
|
name = "ninja scarf"
|
|
desc = "A stealthy, dark scarf."
|
|
icon_state = "s-ninja"
|
|
body_parts_covered = FACE
|
|
item_flags = FLEXIBLEMATERIAL
|
|
w_class = ITEMSIZE_SMALL
|
|
gas_transfer_coefficient = 0.90
|
|
siemens_coefficient = 0
|
|
|
|
/obj/item/clothing/mask/pig
|
|
name = "pig mask"
|
|
desc = "A rubber pig mask."
|
|
icon_state = "pig"
|
|
flags_inv = HIDEFACE|BLOCKHAIR
|
|
w_class = ITEMSIZE_SMALL
|
|
siemens_coefficient = 0.9
|
|
body_parts_covered = HEAD|FACE|EYES
|
|
|
|
/obj/item/clothing/mask/shark
|
|
name = "shark mask"
|
|
desc = "A rubber shark mask."
|
|
icon_state = "shark"
|
|
flags_inv = HIDEFACE
|
|
w_class = ITEMSIZE_SMALL
|
|
siemens_coefficient = 0.9
|
|
body_parts_covered = HEAD|FACE|EYES
|
|
|
|
/obj/item/clothing/mask/dolphin
|
|
name = "dolphin mask"
|
|
desc = "A rubber dolphin mask."
|
|
icon_state = "dolphin"
|
|
flags_inv = HIDEFACE
|
|
w_class = ITEMSIZE_SMALL
|
|
siemens_coefficient = 0.9
|
|
body_parts_covered = HEAD|FACE|EYES
|
|
|
|
/obj/item/clothing/mask/goblin
|
|
name = "goblin mask"
|
|
desc = "A rubber goblin mask."
|
|
icon_state = "goblin"
|
|
flags_inv = HIDEFACE
|
|
w_class = ITEMSIZE_SMALL
|
|
siemens_coefficient = 0.9
|
|
body_parts_covered = HEAD|FACE|EYES
|
|
|
|
/obj/item/clothing/mask/demon
|
|
name = "demon mask"
|
|
desc = "A rubber demon mask."
|
|
icon_state = "demon"
|
|
flags_inv = HIDEFACE
|
|
w_class = ITEMSIZE_SMALL
|
|
siemens_coefficient = 0.9
|
|
body_parts_covered = HEAD|FACE|EYES
|
|
|
|
/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"
|
|
flags_inv = HIDEFACE|BLOCKHAIR
|
|
body_parts_covered = HEAD|FACE|EYES
|
|
w_class = ITEMSIZE_SMALL
|
|
siemens_coefficient = 0.9
|
|
/* //Lost to time.
|
|
/obj/item/clothing/mask/nock_scarab
|
|
name = "nock mask (blue, scarab)"
|
|
desc = "To Nock followers, masks symbolize rebirth and a new persona. Damaging the wearer's mask is generally considered an attack on their person itself."
|
|
icon_state = "nock_scarab"
|
|
w_class = ITEMSIZE_SMALL
|
|
body_parts_covered = HEAD|FACE
|
|
|
|
/obj/item/clothing/mask/nock_demon
|
|
name = "nock mask (purple, demon)"
|
|
desc = "To Nock followers, masks symbolize rebirth and a new persona. Damaging the wearer's mask is generally considered an attack on their person itself."
|
|
icon_state = "nock_demon"
|
|
w_class = ITEMSIZE_SMALL
|
|
body_parts_covered = HEAD|FACE
|
|
|
|
/obj/item/clothing/mask/nock_life
|
|
name = "nock mask (green, life)"
|
|
desc = "To Nock followers, masks symbolize rebirth and a new persona. Damaging the wearer's mask is generally considered an attack on their person itself."
|
|
icon_state = "nock_life"
|
|
w_class = ITEMSIZE_SMALL
|
|
body_parts_covered = HEAD|FACE
|
|
|
|
/obj/item/clothing/mask/nock_ornate
|
|
name = "nock mask (red, ornate)"
|
|
desc = "To Nock followers, masks symbolize rebirth and a new persona. Damaging the wearer's mask is generally considered an attack on their person itself."
|
|
icon_state = "nock_ornate"
|
|
w_class = ITEMSIZE_SMALL
|
|
body_parts_covered = HEAD|FACE
|
|
*/
|
|
/obj/item/clothing/mask/horsehead/Initialize(mapload)
|
|
. = ..()
|
|
// The horse mask doesn't cause voice changes by default, the wizard spell changes the flag as necessary
|
|
say_messages = list("NEEIIGGGHHHH!", "NEEEIIIIGHH!", "NEIIIGGHH!", "HAAWWWWW!", "HAAAWWW!")
|
|
say_verbs = list("whinnies", "neighs", "says")
|
|
|
|
/obj/item/clothing/mask/ai
|
|
name = "camera MIU"
|
|
desc = "Allows for direct mental connection to accessible camera networks."
|
|
icon_state = "s-ninja"
|
|
item_state_slots = list(slot_r_hand_str = "mime", slot_l_hand_str = "mime")
|
|
flags_inv = HIDEFACE
|
|
body_parts_covered = 0
|
|
var/mob/observer/eye/aiEye/eye
|
|
|
|
/obj/item/clothing/mask/ai/Initialize(mapload)
|
|
. = ..()
|
|
eye = new(src)
|
|
|
|
/obj/item/clothing/mask/ai/equipped(var/mob/user, var/slot)
|
|
..(user, slot)
|
|
if(slot == slot_wear_mask)
|
|
eye.owner = user
|
|
user.eyeobj = eye
|
|
|
|
for(var/datum/chunk/c in eye.visibleChunks)
|
|
c.remove(eye)
|
|
eye.setLoc(user)
|
|
|
|
/obj/item/clothing/mask/ai/dropped(mob/user)
|
|
..()
|
|
if(eye.owner == user)
|
|
for(var/datum/chunk/c in eye.visibleChunks)
|
|
c.remove(eye)
|
|
|
|
eye.owner.eyeobj = null
|
|
eye.owner = null
|
|
|
|
/obj/item/clothing/mask/bandana
|
|
name = "black bandana"
|
|
desc = "A fine black bandana with nanotech lining. Can be worn on the head or face."
|
|
w_class = ITEMSIZE_TINY
|
|
flags_inv = HIDEFACE
|
|
slot_flags = SLOT_MASK|SLOT_HEAD
|
|
body_parts_covered = FACE
|
|
icon_state = "bandblack"
|
|
item_state_slots = list(slot_r_hand_str = "bandblack", slot_l_hand_str = "bandblack")
|
|
|
|
/obj/item/clothing/mask/bandana/equipped(var/mob/user, var/slot)
|
|
switch(slot)
|
|
if(slot_wear_mask) //Mask is the default for all the settings
|
|
flags_inv = initial(flags_inv)
|
|
body_parts_covered = initial(body_parts_covered)
|
|
icon_state = initial(icon_state)
|
|
|
|
if(slot_head)
|
|
flags_inv = 0
|
|
body_parts_covered = HEAD
|
|
icon_state = "[initial(icon_state)]_up"
|
|
|
|
return ..()
|
|
|
|
/obj/item/clothing/mask/bandana/red
|
|
name = "red bandana"
|
|
desc = "A fine red bandana with nanotech lining. Can be worn on the head or face."
|
|
icon_state = "bandred"
|
|
item_state_slots = list(slot_r_hand_str = "bandred", slot_l_hand_str = "bandred")
|
|
|
|
/obj/item/clothing/mask/bandana/blue
|
|
name = "blue bandana"
|
|
desc = "A fine blue bandana with nanotech lining. Can be worn on the head or face."
|
|
icon_state = "bandblue"
|
|
item_state_slots = list(slot_r_hand_str = "bandblue", slot_l_hand_str = "bandblue")
|
|
|
|
/obj/item/clothing/mask/bandana/green
|
|
name = "green bandana"
|
|
desc = "A fine green bandana with nanotech lining. Can be worn on the head or face."
|
|
icon_state = "bandgreen"
|
|
item_state_slots = list(slot_r_hand_str = "bandgreen", slot_l_hand_str = "bandgreen")
|
|
|
|
/obj/item/clothing/mask/bandana/gold
|
|
name = "gold bandana"
|
|
desc = "A fine gold bandana with nanotech lining. Can be worn on the head or face."
|
|
icon_state = "bandgold"
|
|
item_state_slots = list(slot_r_hand_str = "bandgold", slot_l_hand_str = "bandgold")
|
|
|
|
/obj/item/clothing/mask/bandana/skull
|
|
name = "skull bandana"
|
|
desc = "A fine black bandana with nanotech lining and a skull emblem. Can be worn on the head or face."
|
|
icon_state = "bandskull"
|
|
item_state_slots = list(slot_r_hand_str = "bandskull", slot_l_hand_str = "bandskull")
|
|
|
|
/obj/item/clothing/mask/veil
|
|
name = "black veil"
|
|
desc = "A black veil, typically worn at funerals or by goths."
|
|
w_class = ITEMSIZE_TINY
|
|
body_parts_covered = FACE
|
|
icon_state = "veil"
|
|
|
|
/obj/item/clothing/mask/paper
|
|
name = "paper mask"
|
|
desc = "A neat, circular mask made out of paper. Perhaps you could try drawing on it with a pen!"
|
|
w_class = ITEMSIZE_SMALL
|
|
body_parts_covered = FACE
|
|
icon_state = "papermask"
|
|
actions_types = list(/datum/action/item_action/hands_free/redraw_design)
|
|
var/list/papermask_designs = list()
|
|
|
|
/obj/item/clothing/mask/paper/Initialize(mapload)
|
|
. = ..()
|
|
papermask_designs = list(
|
|
"Blank" = image(icon = src.icon, icon_state = "papermask"),
|
|
"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"),
|
|
"Line" = image(icon = src.icon, icon_state = "linemask"),
|
|
"Minus" = image(icon = src.icon, icon_state = "minusmask"),
|
|
"Four" = image(icon = src.icon, icon_state = "fourmask"),
|
|
"Diamond" = image(icon = src.icon, icon_state = "diamondmask"),
|
|
"Cat" = image(icon = src.icon, icon_state = "catmask"),
|
|
"Big Eyes" = image(icon = src.icon, icon_state = "bigeyemask"),
|
|
"Good" = image(icon = src.icon, icon_state = "goodmask"),
|
|
"Bad" = image(icon = src.icon, icon_state = "badmask"),
|
|
"Happy" = image(icon = src.icon, icon_state = "happymask"),
|
|
"Sad" = image(icon = src.icon, icon_state = "sadmask")
|
|
)
|
|
|
|
/obj/item/clothing/mask/paper/attack_self(mob/user)
|
|
. = ..()
|
|
if(!istype(user) || user.incapacitated())
|
|
return
|
|
|
|
var/static/list/options = list("Blank" = "papermask", "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",
|
|
"Line" = "linemask", "Minus" = "minusmask", "Four" = "fourmask",
|
|
"Diamond" = "diamondmask", "Cat" = "catmask", "Big Eyes" = "bigeyemask",
|
|
"Good" = "goodmask", "Bad" = "badmask", "Happy" = "happymask", "Sad" = "sadmask"
|
|
)
|
|
|
|
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()
|
|
user.update_mob_action_buttons()
|
|
to_chat(user, span_notice("Your paper mask now is now [choice]."))
|
|
return 1
|
|
|
|
/obj/item/clothing/mask/emotions
|
|
name = "emotional mask"
|
|
desc = "Express your happiness or hide your sorrows with this modular cutout. Draw your current emotions onto it with a pen!"
|
|
w_class = ITEMSIZE_SMALL
|
|
body_parts_covered = FACE
|
|
icon_state = "joy"
|
|
actions_types = list(/datum/action/item_action/hands_free/redraw_design)
|
|
var/static/list/joymask_designs = list()
|
|
|
|
|
|
/obj/item/clothing/mask/emotions/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/emotions/attack_self(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()
|
|
user.update_mob_action_buttons()
|
|
to_chat(user, span_notice("Your [src] now displays a [choice] emotion."))
|
|
return 1
|
|
|
|
/obj/item/clothing/mask/mouthwheat
|
|
name = "mouth wheat"
|
|
desc = "100% synthetic \"Country Girls LLC.\" brand mouth wheat. Warning: not for actual consumption."
|
|
icon_state = "mouthwheat"
|
|
w_class = ITEMSIZE_SMALL
|
|
body_parts_covered = 0
|