mirror of
https://github.com/VOREStation/VOREStation.git
synced 2026-05-18 04:41:27 +01:00
d5849910e5
* Begin clickcode attack_self fix Begins the work to make everything call back to parent for attack_self so that signals are sacred. * Makes MORE things call the attack_self() parent Yes, I could make special_handling a var on obj/item HOWEVER i want it to be specific so it can be tracked down later and ONLY the objects that use it can be refactored instead of sitting there literally forever and it just becoming 'a thing'. * Finishes making the rest of attack_self call parent. As mentioned, things such as 'specialty_goggles' 'special_handling' and the such are only there to help with attack_self until the attack_self is recoded for those items. * begone foul demon * some more cleanup * These * GOD this was annoying * yeh * Fix this * fLARES * Thesee too * toys! * Even more! * More fixes * Even more * rest of em * these too * Update syndie.dm * hardref clear * Update code/game/gamemodes/nuclear/pinpointer.dm * Update code/game/objects/effects/mines.dm * Update code/game/objects/items/blueprints_vr.dm * Update code/game/objects/items/blueprints_vr.dm * Update code/game/objects/items/contraband_vr.dm * Update code/game/objects/items/crayons.dm * Update code/game/objects/items/crayons.dm * Update code/game/objects/items/gunbox.dm * Update code/game/objects/items/gunbox.dm * Update code/game/objects/items/gunbox_vr.dm * Update code/game/objects/items/gunbox_vr.dm * Update code/game/objects/items/weapons/gift_wrappaper.dm * Update code/game/objects/items/crayons.dm * Update code/game/objects/items/crayons.dm * Update code/game/objects/items/gunbox.dm * these too * Update maintpanel_stack.dm * angry warning * Fixes packaged snacks. Fixes improper var default. * Special handling for these * proper poly types * Fixes magclaws Makes the 'features' it had just part of base magboots that can be adjusted via varswap. * Fixes jackets Fixes https://github.com/VOREStation/VOREStation/issues/18941 * Small bugfix Makes p_Theyre properly capitialize Makes examine show proper wording * Update gift_wrappaper.dm
668 lines
22 KiB
Plaintext
668 lines
22 KiB
Plaintext
/obj/item/clothing/accessory
|
|
name = "tie"
|
|
desc = "A neosilk clip-on tie."
|
|
icon = 'icons/inventory/accessory/item.dmi'
|
|
icon_state = "bluetie"
|
|
item_state_slots = list(slot_r_hand_str = "", slot_l_hand_str = "")
|
|
appearance_flags = RESET_COLOR // Stops has_suit's color from being multiplied onto the accessory
|
|
slot_flags = SLOT_TIE
|
|
w_class = ITEMSIZE_SMALL
|
|
var/glove_level = 1 // What 'level' the accessory is on if equipped on the gloveslot. Lower = things can be put on top of it.
|
|
var/slot = ACCESSORY_SLOT_DECOR
|
|
var/can_remove = TRUE // Can it be taken off once attached?
|
|
var/obj/item/clothing/has_suit = null // The suit the tie may be attached to
|
|
var/image/inv_overlay = null // Overlay used when attached to clothing.
|
|
var/image/mob_overlay = null
|
|
var/overlay_state = null
|
|
var/punch_force = 0 // added melee damage
|
|
var/punch_damtype = BRUTE // added melee damage type
|
|
var/concealed_holster = 0
|
|
var/list/on_rolled = list() // Used when jumpsuit sleevels are rolled ("rolled" entry) or it's rolled down ("down"). Set to "none" to hide in those states.
|
|
sprite_sheets = list(SPECIES_TESHARI = 'icons/inventory/accessory/mob_teshari.dmi') //Teshari can into webbing, too!
|
|
drop_sound = 'sound/items/drop/accessory.ogg'
|
|
pickup_sound = 'sound/items/pickup/accessory.ogg'
|
|
|
|
/obj/item/clothing/accessory/Destroy()
|
|
on_removed()
|
|
return ..()
|
|
|
|
/obj/item/clothing/accessory/proc/get_inv_overlay()
|
|
if(!inv_overlay)
|
|
var/tmp_icon_state = "[overlay_state? "[overlay_state]" : "[icon_state]"]"
|
|
if(icon_override)
|
|
if(icon_exists(icon_override, "[tmp_icon_state]_tie"))
|
|
tmp_icon_state = "[tmp_icon_state]_tie"
|
|
inv_overlay = image(icon = icon_override, icon_state = tmp_icon_state, dir = SOUTH)
|
|
else
|
|
inv_overlay = image(icon = INV_ACCESSORIES_DEF_ICON, icon_state = tmp_icon_state, dir = SOUTH)
|
|
|
|
inv_overlay.color = src.color
|
|
inv_overlay.appearance_flags = appearance_flags // Stops has_suit's color from being multiplied onto the accessory
|
|
return inv_overlay
|
|
|
|
/obj/item/clothing/accessory/proc/get_mob_overlay()
|
|
if(!istype(loc,/obj/item/clothing/)) //don't need special handling if it's worn as normal item.
|
|
return
|
|
var/tmp_icon_state = "[overlay_state? "[overlay_state]" : "[icon_state]"]"
|
|
if(ishuman(has_suit.loc))
|
|
wearer = WEAKREF(has_suit.loc)
|
|
else
|
|
wearer = null
|
|
|
|
var/mob/living/carbon/human/H = wearer?.resolve()
|
|
if(!ishuman(H))
|
|
return
|
|
|
|
if(istype(loc,/obj/item/clothing/under))
|
|
var/obj/item/clothing/under/C = loc
|
|
if(on_rolled["down"] && C.rolled_down > 0)
|
|
tmp_icon_state = on_rolled["down"]
|
|
else if(on_rolled["rolled"] && C.rolled_sleeves > 0)
|
|
tmp_icon_state = on_rolled["rolled"]
|
|
|
|
if(icon_override)
|
|
if(icon_exists(icon_override, "[tmp_icon_state]_mob"))
|
|
tmp_icon_state = "[tmp_icon_state]_mob"
|
|
mob_overlay = image("icon" = icon_override, "icon_state" = "[tmp_icon_state]")
|
|
else if(H && LAZYACCESS(sprite_sheets, H.species.get_bodytype(H))) //Teshari can finally into webbing, too!
|
|
mob_overlay = image("icon" = sprite_sheets[H.species.get_bodytype(H)], "icon_state" = "[tmp_icon_state]")
|
|
else
|
|
mob_overlay = image("icon" = INV_ACCESSORIES_DEF_ICON, "icon_state" = "[tmp_icon_state]")
|
|
if(addblends)
|
|
var/icon/base = new/icon("icon" = mob_overlay.icon, "icon_state" = mob_overlay.icon_state)
|
|
var/addblend_icon = new/icon("icon" = mob_overlay.icon, "icon_state" = src.addblends)
|
|
if(color)
|
|
base.Blend(src.color, ICON_MULTIPLY)
|
|
base.Blend(addblend_icon, ICON_ADD)
|
|
mob_overlay = image(base)
|
|
else
|
|
mob_overlay.color = src.color
|
|
|
|
mob_overlay.appearance_flags = appearance_flags // Stops has_suit's color from being multiplied onto the accessory
|
|
return mob_overlay
|
|
|
|
//when user attached an accessory to S
|
|
/obj/item/clothing/accessory/proc/on_attached(var/obj/item/clothing/S, var/mob/user)
|
|
if(!istype(S))
|
|
return
|
|
has_suit = S
|
|
src.forceMove(S)
|
|
has_suit.add_overlay(get_inv_overlay())
|
|
|
|
has_suit.force += force
|
|
if(istype(S,/obj/item/clothing/gloves))
|
|
var/obj/item/clothing/gloves/has_gloves = S
|
|
has_gloves.punch_force = has_gloves.punch_force + punch_force
|
|
|
|
if(user)
|
|
to_chat(user, span_notice("You attach \the [src] to \the [has_suit]."))
|
|
add_fingerprint(user)
|
|
|
|
/obj/item/clothing/accessory/proc/on_removed(var/mob/user)
|
|
if(!has_suit)
|
|
return
|
|
has_suit.cut_overlay(get_inv_overlay())
|
|
has_suit.force = initial(has_suit.force)
|
|
if(istype(has_suit,/obj/item/clothing/gloves))
|
|
var/obj/item/clothing/gloves/has_gloves = has_suit
|
|
has_gloves.punch_force = initial(has_gloves.punch_force)
|
|
has_suit = null
|
|
if(QDELETED(src))
|
|
return
|
|
if(user)
|
|
user.put_in_hands(src)
|
|
add_fingerprint(user)
|
|
else if(get_turf(src)) //We actually exist in space
|
|
forceMove(get_turf(src))
|
|
|
|
//default attackby behaviour
|
|
/obj/item/clothing/accessory/attackby(obj/item/I, mob/user)
|
|
..()
|
|
|
|
//default attack_hand behaviour
|
|
/obj/item/clothing/accessory/attack_hand(mob/user)
|
|
if(has_suit)
|
|
return //we aren't an object on the ground so don't call parent
|
|
..()
|
|
|
|
/obj/item/clothing/accessory/tie
|
|
name = "blue tie"
|
|
icon_state = "bluetie"
|
|
slot = ACCESSORY_SLOT_TIE
|
|
|
|
/obj/item/clothing/accessory/tie/red
|
|
name = "red tie"
|
|
icon_state = "redtie"
|
|
|
|
/obj/item/clothing/accessory/tie/blue_clip
|
|
name = "blue tie with a clip"
|
|
icon_state = "bluecliptie"
|
|
|
|
/obj/item/clothing/accessory/tie/blue_long
|
|
name = "blue long tie"
|
|
icon_state = "bluelongtie"
|
|
|
|
/obj/item/clothing/accessory/tie/red_clip
|
|
name = "red tie with a clip"
|
|
icon_state = "redcliptie"
|
|
|
|
/obj/item/clothing/accessory/tie/red_long
|
|
name = "red long tie"
|
|
icon_state = "redlongtie"
|
|
|
|
/obj/item/clothing/accessory/tie/black
|
|
name = "black tie"
|
|
icon_state = "blacktie"
|
|
|
|
/obj/item/clothing/accessory/tie/darkgreen
|
|
name = "dark green tie"
|
|
icon_state = "dgreentie"
|
|
|
|
/obj/item/clothing/accessory/tie/yellow
|
|
name = "yellow tie"
|
|
icon_state = "yellowtie"
|
|
|
|
/obj/item/clothing/accessory/tie/navy
|
|
name = "navy tie"
|
|
icon_state = "navytie"
|
|
|
|
/obj/item/clothing/accessory/tie/white
|
|
name = "white tie"
|
|
icon_state = "whitetie"
|
|
|
|
/obj/item/clothing/accessory/tie/horrible
|
|
name = "horrible tie"
|
|
desc = "A neosilk clip-on tie. This one is disgusting."
|
|
icon_state = "horribletie"
|
|
|
|
/obj/item/clothing/accessory/bowtie
|
|
name = "red bow tie"
|
|
desc = "Snazzy!"
|
|
icon_state = "redbowtie"
|
|
slot = ACCESSORY_SLOT_TIE
|
|
|
|
/obj/item/clothing/accessory/bowtie/black
|
|
name = "black bow tie"
|
|
icon_state = "blackbowtie"
|
|
|
|
/obj/item/clothing/accessory/bowtie/white
|
|
name = "white bow tie"
|
|
icon_state = "whitebowtie"
|
|
|
|
/obj/item/clothing/accessory/maid_neck
|
|
name = "maid neck cover"
|
|
desc = "A neckpiece for a maid costume, it smells faintly of disappointment."
|
|
icon_state = "maid_neck"
|
|
|
|
/obj/item/clothing/accessory/maidcorset
|
|
name = "maid corset"
|
|
desc = "The final touch that holds it all together."
|
|
icon_state = "maidcorset"
|
|
|
|
/obj/item/clothing/accessory/maid_arms
|
|
name = "maid arm covers"
|
|
desc = "Cylindrical looking tubes that go over your arms, weird."
|
|
slot_flags = SLOT_OCLOTHING | SLOT_GLOVES | SLOT_TIE
|
|
body_parts_covered = ARMS
|
|
heat_protection = ARMS
|
|
cold_protection = ARMS
|
|
description_info = "Wearable as gloves, or attachable to uniforms. May visually conflict with actual gloves when attached to uniforms. Caveat emptor."
|
|
icon_state = "maid_arms"
|
|
|
|
/obj/item/clothing/accessory/stethoscope
|
|
name = "stethoscope"
|
|
desc = "An outdated medical apparatus for listening to the sounds of the human body. It also makes you look like you know what you're doing."
|
|
icon_state = "stethoscope"
|
|
slot = ACCESSORY_SLOT_TIE
|
|
|
|
/obj/item/clothing/accessory/stethoscope/do_surgery(mob/living/carbon/human/M, mob/living/user)
|
|
if(user.a_intent != I_HELP) //in case it is ever used as a surgery tool
|
|
return ..()
|
|
attack(M, user) //default surgery behaviour is just to scan as usual
|
|
return 1
|
|
|
|
/obj/item/clothing/accessory/stethoscope/attack(mob/living/carbon/human/M, mob/living/user)
|
|
if(ishuman(M) && isliving(user))
|
|
if(user.a_intent == I_HELP)
|
|
var/body_part = parse_zone(user.zone_sel.selecting)
|
|
if(body_part)
|
|
var/their = "their"
|
|
switch(M.gender)
|
|
if(MALE) their = "his"
|
|
if(FEMALE) their = "her"
|
|
|
|
var/sound = "heartbeat"
|
|
var/sound_strength = "cannot hear"
|
|
if(M.stat == DEAD || (M.status_flags & FAKEDEATH))
|
|
sound_strength = "cannot hear"
|
|
sound = "anything"
|
|
else
|
|
switch(body_part)
|
|
//TORSO:
|
|
//ORGANS INVENTORY: Heart, Lungs, Spleen, Voicebox,
|
|
if(BP_TORSO)
|
|
var/obj/item/organ/internal/heart/heart = M.internal_organs_by_name[O_HEART]
|
|
sound_strength = "hear"
|
|
sound = "no heartbeat"
|
|
if(heart)
|
|
if(heart.is_bruised())
|
|
sound = span_warning("muffled heart sounds, as if fluid is around the heart") //yes this shows over the heart beinng robotic.
|
|
else if(heart.robotic) //They have JUST a heart but no heartbeat
|
|
if(heart.robotic == ORGAN_ASSISTED) //LVAD
|
|
sound = "a loud, continual, electronic hum"
|
|
else if(heart.robotic == ORGAN_ROBOT || heart.robotic == ORGAN_LIFELIKE)
|
|
sound = "a light, rhythmic, mechanical clicking"
|
|
else
|
|
sound = span_warning("no heartbeat")
|
|
else
|
|
switch(M.pulse)
|
|
if(PULSE_NONE)
|
|
sound = "no heartbeat"
|
|
if(PULSE_SLOW)
|
|
sound = "a slow heartbeat"
|
|
if(PULSE_NORM)
|
|
sound = "a normal, healthy heartbeat"
|
|
if(PULSE_FAST)
|
|
sound = "a rapid heartbeat"
|
|
if(PULSE_2FAST)
|
|
sound = span_info("a very rapid heartbeat")
|
|
if(PULSE_THREADY)
|
|
sound = span_warning("an extremely rapid, thready, irregular heartbeat")
|
|
|
|
var/obj/item/organ/internal/lungs/L = M.internal_organs_by_name[O_LUNGS]
|
|
if(!L || M.losebreath)
|
|
sound += span_warning(" and no respiration")
|
|
else if(M.is_lung_ruptured() || M.getOxyLoss() > 50)
|
|
sound += span_warning(" and [pick("wheezing","gurgling")] sounds")
|
|
else
|
|
sound += " and healthy respiration"
|
|
//GROIN
|
|
//ORGANS INVENTORY: Appendix, Intestines, Kidneys, Liver, Spleen, Stomach.
|
|
//Of these, the Intestines, Stomach, Liver, and Kidneys make noise.
|
|
if(BP_GROIN)
|
|
var/obj/item/organ/internal/intestine/intestine = M.internal_organs_by_name[O_INTESTINE]
|
|
var/obj/item/organ/internal/stomach/stomach = M.internal_organs_by_name[O_STOMACH]
|
|
var/obj/item/organ/internal/kidneys/kidneys = M.internal_organs_by_name[O_KIDNEYS]
|
|
var/obj/item/organ/internal/liver/liver = M.internal_organs_by_name[O_LIVER]
|
|
sound_strength = "hear"
|
|
sound = span_warning("no gastric sounds,")
|
|
if(intestine)
|
|
if(intestine.is_bruised())
|
|
sound = span_warning("slowed intestinal sounds")
|
|
else
|
|
sound = "normal intestinal sounds,"
|
|
|
|
|
|
if(stomach)
|
|
if(stomach.is_bruised())
|
|
sound += span_warning(" slowed digestive sounds,")
|
|
else
|
|
sound += " with normal digestive sounds,"
|
|
else
|
|
sound += span_warning(" no digestive sounds,")
|
|
|
|
if(kidneys && kidneys.is_bruised())
|
|
sound += span_warning(" renal bruits,") //I don't really know how to convey this without using medical terminology.
|
|
else
|
|
sound += " no renal sounds,"
|
|
|
|
if(liver) //yeah, I didn't know your liver could make sounds either.
|
|
if(liver.is_bruised())
|
|
sound += span_warning(" and abnormal liver sounds.")
|
|
else
|
|
sound += " and normal liver sounds."
|
|
else
|
|
sound_strength = "cannot hear"
|
|
sound = "anything"
|
|
|
|
user.visible_message("[user] places [src] against [M]'s [body_part] and listens attentively.", "You place [src] against [their] [body_part]. You [sound_strength] [sound].")
|
|
return
|
|
return ..(M,user)
|
|
|
|
//Medals
|
|
/obj/item/clothing/accessory/medal
|
|
name = "bronze medal"
|
|
desc = "A bronze medal."
|
|
icon_state = "bronze"
|
|
slot = ACCESSORY_SLOT_MEDAL
|
|
drop_sound = 'sound/items/drop/accessory.ogg'
|
|
pickup_sound = 'sound/items/pickup/accessory.ogg'
|
|
|
|
/obj/item/clothing/accessory/medal/conduct
|
|
name = "distinguished conduct medal"
|
|
desc = "A bronze medal awarded for distinguished conduct. Whilst a great honor, this is most basic award on offer. It is often awarded by a captain to a member of their crew."
|
|
|
|
/obj/item/clothing/accessory/medal/bronze_heart
|
|
name = "bronze heart medal"
|
|
desc = "A bronze heart-shaped medal awarded for sacrifice. It is often awarded posthumously or for severe injury in the line of duty."
|
|
icon_state = "bronze_heart"
|
|
|
|
/obj/item/clothing/accessory/medal/nobel_science
|
|
name = "nobel sciences award"
|
|
desc = "A bronze medal which represents significant contributions to the field of science or engineering."
|
|
|
|
/obj/item/clothing/accessory/medal/silver
|
|
name = "silver medal"
|
|
desc = "A silver medal."
|
|
icon_state = "silver"
|
|
|
|
/obj/item/clothing/accessory/medal/silver/valor
|
|
name = "medal of valor"
|
|
desc = "A silver medal awarded for acts of exceptional valor."
|
|
|
|
/obj/item/clothing/accessory/medal/silver/security
|
|
name = "robust security award"
|
|
desc = "An award for distinguished combat and sacrifice in defence of corporate commercial interests. Often awarded to security staff."
|
|
|
|
/obj/item/clothing/accessory/medal/gold
|
|
name = "gold medal"
|
|
desc = "A prestigious golden medal."
|
|
icon_state = "gold"
|
|
|
|
/obj/item/clothing/accessory/medal/gold/captain
|
|
name = "medal of captaincy"
|
|
desc = "A golden medal awarded exclusively to those promoted to the rank of captain. It signifies the codified responsibilities of a captain, and their undisputable authority over their crew."
|
|
|
|
/obj/item/clothing/accessory/medal/gold/heroism
|
|
name = "medal of exceptional heroism"
|
|
desc = "An extremely rare golden medal awarded only by high ranking officials. To receive such a medal is the highest honor and as such, very few exist. This medal is almost never awarded to anybody but distinguished veteran staff."
|
|
|
|
/obj/item/clothing/accessory/medal/gold/casino
|
|
name = "medal of true lucky winner"
|
|
desc = "A gaudy golden medal with a logo of a casino engraved on top. The only achievement you had to earn this was great luck or great richness, neither of which is an achievement. Still, it instills a feeling of hope and smell of fresh bagels."
|
|
|
|
// Base type for 'medals' found in a "dungeon" submap, as a sort of trophy to celebrate the player's conquest.
|
|
/obj/item/clothing/accessory/medal/dungeon
|
|
|
|
/obj/item/clothing/accessory/medal/dungeon/alien_ufo
|
|
name = "alien captain's medal"
|
|
desc = "It vaguely like a star. It looks like something an alien captain might've worn. Probably."
|
|
icon_state = "alien_medal"
|
|
|
|
//Scarves
|
|
|
|
/obj/item/clothing/accessory/scarf
|
|
name = "green scarf"
|
|
desc = "A stylish scarf. The perfect winter accessory for those with a keen fashion sense, and those who just can't handle a cold breeze on their necks."
|
|
icon_state = "greenscarf"
|
|
slot = ACCESSORY_SLOT_DECOR
|
|
|
|
/obj/item/clothing/accessory/scarf/red
|
|
name = "red scarf"
|
|
icon_state = "redscarf"
|
|
|
|
/obj/item/clothing/accessory/scarf/darkblue
|
|
name = "dark blue scarf"
|
|
icon_state = "darkbluescarf"
|
|
|
|
/obj/item/clothing/accessory/scarf/purple
|
|
name = "purple scarf"
|
|
icon_state = "purplescarf"
|
|
|
|
/obj/item/clothing/accessory/scarf/yellow
|
|
name = "yellow scarf"
|
|
icon_state = "yellowscarf"
|
|
|
|
/obj/item/clothing/accessory/scarf/orange
|
|
name = "orange scarf"
|
|
icon_state = "orangescarf"
|
|
|
|
/obj/item/clothing/accessory/scarf/lightblue
|
|
name = "light blue scarf"
|
|
icon_state = "lightbluescarf"
|
|
|
|
/obj/item/clothing/accessory/scarf/white
|
|
name = "white scarf"
|
|
icon_state = "whitescarf"
|
|
|
|
/obj/item/clothing/accessory/scarf/black
|
|
name = "black scarf"
|
|
icon_state = "blackscarf"
|
|
|
|
/obj/item/clothing/accessory/scarf/zebra
|
|
name = "zebra scarf"
|
|
icon_state = "zebrascarf"
|
|
|
|
/obj/item/clothing/accessory/scarf/christmas
|
|
name = "christmas scarf"
|
|
icon_state = "christmasscarf"
|
|
|
|
/obj/item/clothing/accessory/scarf/stripedred
|
|
name = "striped red scarf"
|
|
icon_state = "stripedredscarf"
|
|
|
|
/obj/item/clothing/accessory/scarf/stripedgreen
|
|
name = "striped green scarf"
|
|
icon_state = "stripedgreenscarf"
|
|
|
|
/obj/item/clothing/accessory/scarf/stripedblue
|
|
name = "striped blue scarf"
|
|
icon_state = "stripedbluescarf"
|
|
|
|
/obj/item/clothing/accessory/scarf/teshari/neckscarf
|
|
name = "small neckscarf"
|
|
desc = "a neckscarf that is too small for a human's neck"
|
|
icon_state = "tesh_neckscarf"
|
|
species_restricted = list(SPECIES_TESHARI)
|
|
|
|
/obj/item/clothing/accessory/halfcape
|
|
name = "half cape"
|
|
desc = "A tasteful half-cape, suitible for European nobles and retro anime protagonists."
|
|
icon_state = "halfcape"
|
|
slot = ACCESSORY_SLOT_DECOR
|
|
|
|
/obj/item/clothing/accessory/fullcape
|
|
name = "full cape"
|
|
desc = "A gaudy full cape. You're thinking about wearing it, aren't you?"
|
|
icon_state = "fullcape"
|
|
slot = ACCESSORY_SLOT_DECOR
|
|
|
|
/obj/item/clothing/accessory/sash
|
|
name = "sash"
|
|
desc = "A plain, unadorned sash."
|
|
icon_state = "sash"
|
|
slot = ACCESSORY_SLOT_OVER
|
|
|
|
//Gaiter scarves
|
|
/obj/item/clothing/accessory/gaiter
|
|
name = "red neck gaiter"
|
|
desc = "A slightly worn neck gaiter, it's loose enough to be worn comfortably like a scarf. Commonly used by outdoorsmen and mercenaries, both to keep warm and keep debris away from the face."
|
|
icon_state = "gaiter_red"
|
|
slot_flags = SLOT_MASK | SLOT_TIE
|
|
body_parts_covered = FACE
|
|
w_class = ITEMSIZE_SMALL
|
|
slot = ACCESSORY_SLOT_INSIGNIA // snowflakey, i know, shut up
|
|
item_flags = FLEXIBLEMATERIAL
|
|
var/breath_masked = FALSE
|
|
var/obj/item/clothing/mask/breath/breathmask
|
|
actions_types = list(/datum/action/item_action/pull_on_gaiter)
|
|
special_handling = TRUE
|
|
|
|
/obj/item/clothing/accessory/gaiter/update_clothing_icon()
|
|
. = ..()
|
|
if(ismob(src.loc))
|
|
var/mob/M = src.loc
|
|
M.update_inv_wear_mask()
|
|
|
|
/obj/item/clothing/accessory/gaiter/attackby(obj/item/I, mob/user)
|
|
if(istype(I, /obj/item/clothing/mask/breath))
|
|
to_chat(user, span_notice("You tuck [I] behind [src]."))
|
|
breathmask = I
|
|
breath_masked = TRUE
|
|
user.drop_from_inventory(I, drop_location())
|
|
I.forceMove(src)
|
|
item_flags &= ~FLEXIBLEMATERIAL
|
|
. = ..()
|
|
|
|
/obj/item/clothing/accessory/gaiter/click_alt(mob/user)
|
|
. = ..()
|
|
if(breath_masked && breathmask)
|
|
to_chat(user, span_notice("You pull [breathmask] out from behind [src], and it drops to your feet."))
|
|
breathmask.forceMove(drop_location())
|
|
breathmask = null
|
|
breath_masked = FALSE
|
|
item_flags &= ~AIRTIGHT
|
|
item_flags |= FLEXIBLEMATERIAL
|
|
|
|
/obj/item/clothing/accessory/gaiter/attack_self(mob/user)
|
|
. = ..(user)
|
|
if(.)
|
|
return TRUE
|
|
var/gaiterstring = "You pull [src] "
|
|
if(src.icon_state == initial(icon_state))
|
|
src.icon_state = "[icon_state]_up"
|
|
gaiterstring += "up over your nose[breath_masked ? " and secure the mask tucked underneath." : "."]"
|
|
if(breath_masked)
|
|
item_flags |= AIRTIGHT
|
|
else
|
|
src.icon_state = initial(icon_state)
|
|
gaiterstring += "down around your neck[breath_masked ? " and dislodge the mask tucked underneath." : "."]"
|
|
body_parts_covered &= ~FACE
|
|
if(breath_masked)
|
|
item_flags &= ~AIRTIGHT
|
|
to_chat(user, span_notice(gaiterstring))
|
|
qdel(mob_overlay) // we're gonna need to refresh these
|
|
update_clothing_icon() //so our mob-overlays update
|
|
|
|
/obj/item/clothing/accessory/gaiter/tan
|
|
name = "tan neck gaiter"
|
|
icon_state = "gaiter_tan"
|
|
|
|
/obj/item/clothing/accessory/gaiter/gray
|
|
name = "gray neck gaiter"
|
|
icon_state = "gaiter_gray"
|
|
|
|
/obj/item/clothing/accessory/gaiter/green
|
|
name = "green neck gaiter"
|
|
icon_state = "gaiter_green"
|
|
|
|
/obj/item/clothing/accessory/gaiter/blue
|
|
name = "blue neck gaiter"
|
|
icon_state = "gaiter_blue"
|
|
|
|
/obj/item/clothing/accessory/gaiter/purple
|
|
name = "purple neck gaiter"
|
|
icon_state = "gaiter_purple"
|
|
|
|
/obj/item/clothing/accessory/gaiter/orange
|
|
name = "orange neck gaiter"
|
|
icon_state = "gaiter_orange"
|
|
|
|
/obj/item/clothing/accessory/gaiter/charcoal
|
|
name = "charcoal neck gaiter"
|
|
icon_state = "gaiter_charcoal"
|
|
|
|
/obj/item/clothing/accessory/gaiter/snow
|
|
name = "white neck gaiter"
|
|
icon_state = "gaiter_snow"
|
|
|
|
/obj/item/clothing/accessory/gaiter/half //functions like a gaiter
|
|
name = "black half-mask"
|
|
icon_state = "half_mask"
|
|
|
|
/*
|
|
* Pride Pins
|
|
*/
|
|
/obj/item/clothing/accessory/pride
|
|
name = "pride pin"
|
|
desc = "A pin displaying pride in one's identity."
|
|
icon_state = "pride"
|
|
slot = ACCESSORY_SLOT_MEDAL
|
|
|
|
/obj/item/clothing/accessory/pride/bi
|
|
name = "bisexual pride pin"
|
|
icon_state = "pride_bi"
|
|
|
|
/obj/item/clothing/accessory/pride/trans
|
|
name = "transgender pride pin"
|
|
icon_state = "pride_trans"
|
|
|
|
/obj/item/clothing/accessory/pride/ace
|
|
name = "asexual pride pin"
|
|
icon_state = "pride_ace"
|
|
|
|
/obj/item/clothing/accessory/pride/enby
|
|
name = "nonbinary pride pin"
|
|
icon_state = "pride_enby"
|
|
|
|
/obj/item/clothing/accessory/pride/pan
|
|
name = "pansexual pride pin"
|
|
icon_state = "pride_pan"
|
|
|
|
/obj/item/clothing/accessory/pride/lesbian
|
|
name = "lesbian pride pin"
|
|
icon_state = "pride_lesbian"
|
|
|
|
/obj/item/clothing/accessory/pride/intersex
|
|
name = "intersex pride pin"
|
|
icon_state = "pride_intersex"
|
|
|
|
/obj/item/clothing/accessory/pride/vore
|
|
name = "vore pride pin"
|
|
icon_state = "pride_vore"
|
|
|
|
// ranger ponchos
|
|
|
|
/obj/item/clothing/accessory/poncho/roles/ranger
|
|
name = "red ranger poncho"
|
|
desc = "A rugged all-weather poncho, perfectly coloured to match a popular line of neck gaiters. You could probably use it as a tent in a pinch!"
|
|
icon_state = "rangerponcho_red"
|
|
item_state = "rangerponcho_red"
|
|
|
|
/obj/item/clothing/accessory/poncho/roles/ranger/tan
|
|
name = "tan ranger poncho"
|
|
icon_state = "rangerponcho_tan"
|
|
item_state = "rangerponcho_tan"
|
|
|
|
/obj/item/clothing/accessory/poncho/roles/ranger/gray
|
|
name = "gray ranger poncho"
|
|
icon_state = "rangerponcho_gray"
|
|
item_state = "rangerponcho_gray"
|
|
|
|
/obj/item/clothing/accessory/poncho/roles/ranger/green
|
|
name = "green ranger poncho"
|
|
icon_state = "rangerponcho_green"
|
|
item_state = "rangerponcho_green"
|
|
|
|
/obj/item/clothing/accessory/poncho/roles/ranger/blue
|
|
name = "blue ranger poncho"
|
|
icon_state = "rangerponcho_blue"
|
|
item_state = "rangerponcho_blue"
|
|
|
|
/obj/item/clothing/accessory/poncho/roles/ranger/purple
|
|
name = "purple ranger poncho"
|
|
icon_state = "rangerponcho_purple"
|
|
item_state = "rangerponcho_purple"
|
|
|
|
/obj/item/clothing/accessory/poncho/roles/ranger/orange
|
|
name = "orange ranger poncho"
|
|
icon_state = "rangerponcho_orange"
|
|
item_state = "rangerponcho_orange"
|
|
|
|
/obj/item/clothing/accessory/poncho/roles/ranger/charcoal
|
|
name = "charcoal ranger poncho"
|
|
icon_state = "rangerponcho_charcoal"
|
|
item_state = "rangerponcho_charcoal"
|
|
|
|
/obj/item/clothing/accessory/poncho/roles/ranger/snow
|
|
name = "white ranger poncho"
|
|
icon_state = "rangerponcho_snow"
|
|
item_state = "rangerponcho_snow"
|
|
|
|
// leg warmers
|
|
|
|
/obj/item/clothing/accessory/legwarmers
|
|
name = "thigh-length legwarmers"
|
|
desc = "A comfy pair of legwarmers. These are excessively long."
|
|
icon_state = "legwarmers_thigh"
|
|
|
|
/obj/item/clothing/accessory/legwarmersmedium
|
|
name = "medium-length legwarmers"
|
|
desc = "A comfy pair of legwarmers. For those unfortunate enough to wear shorts in the cold."
|
|
icon_state = "legwarmers_medium"
|
|
|
|
/obj/item/clothing/accessory/legwarmersshort
|
|
name = "short legwarmers"
|
|
desc = "A comfy pair of legwarmers. For those better in the cold than others."
|
|
icon_state = "legwarmers_short"
|