Files
CHOMPStation2/code/modules/clothing/accessories/accessory.dm
CHOMPStation2StaffMirrorBot a6dcc16233 [MIRROR] Various Surgery & Medical fixes, QoL, and adjustments (#11949)
Co-authored-by: Cameron Lennox <killer65311@gmail.com>
2025-11-08 23:23:20 -05:00

681 lines
24 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)
//Chomp Edit start
var/message_holder //Holds pervy message
var/message_holder2 //Hods the nutrition related message.
var/beat_size = "" //Small prey = quiet
//Chomp Edit end
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)
for(var/belly in M.vore_organs) //Pervy edit. //CHOMPEdit Start
var/obj/belly/B = belly
for(var/mob/living/carbon/human/H in B)
if(H.size_multiplier < 0.5)
beat_size = pick("quiet ", "hushed " ,"low " ,"hushed ")
message_holder = pick("You can hear disparate heartbeats as well.", "You can hear a different [beat_size]heartbeat too.", "It sounds like there is more than one heartbeat." ,"You can pick up a [beat_size]heatbeat along with everything else.")
if(M.nutrition > 900) //dead
message_holder2 = pick("Your listening is troubled by the occasional deep groan of their body.", "There is some moderate bubbling in the background.", "They seem to have a healthy metabolism as well.") //CHOMPEdit End
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]. [message_holder] [message_holder2]") //Chomp edit. ([message holder] & [message_holder2])
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)
/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/AltClick(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)
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"