From d0789ecaf9ce72e2cf7000005fb00e10f2fc1b44 Mon Sep 17 00:00:00 2001 From: Jordan Brown Date: Sat, 21 Oct 2017 20:01:00 -0400 Subject: [PATCH] Splits clothing.dm in 7 other files --- code/modules/clothing/clothing.dm | 469 +----------------- .../clothing/ears/{ears.dm => _ears.dm} | 0 .../glasses/{glasses.dm => _glasses.dm} | 17 +- code/modules/clothing/gloves/_gloves.dm | 31 ++ code/modules/clothing/head/_head.dm | 30 ++ code/modules/clothing/masks/_masks.dm | 53 ++ .../clothing/neck/{neck.dm => _neck.dm} | 17 + code/modules/clothing/shoes/_shoes.dm | 65 +++ .../clothing/spacesuits/_spacesuits.dm | 45 ++ code/modules/clothing/suits/_suits.dm | 31 ++ code/modules/clothing/under/_under.dm | 156 ++++++ tgstation.dme | 30 +- 12 files changed, 474 insertions(+), 470 deletions(-) rename code/modules/clothing/ears/{ears.dm => _ears.dm} (100%) rename code/modules/clothing/glasses/{glasses.dm => _glasses.dm} (92%) create mode 100644 code/modules/clothing/gloves/_gloves.dm create mode 100644 code/modules/clothing/head/_head.dm create mode 100644 code/modules/clothing/masks/_masks.dm rename code/modules/clothing/neck/{neck.dm => _neck.dm} (91%) create mode 100644 code/modules/clothing/shoes/_shoes.dm create mode 100644 code/modules/clothing/spacesuits/_spacesuits.dm create mode 100644 code/modules/clothing/suits/_suits.dm create mode 100644 code/modules/clothing/under/_under.dm diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index 02d3b8e094..58c568f8a6 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -180,23 +180,7 @@ damaged_clothes = 0 cut_overlay(damaged_clothes_icons[index], TRUE) -//Glasses -/obj/item/clothing/glasses - name = "glasses" - icon = 'icons/obj/clothing/glasses.dmi' - w_class = WEIGHT_CLASS_SMALL - flags_cover = GLASSESCOVERSEYES - slot_flags = SLOT_EYES - var/vision_flags = 0 - var/darkness_view = 2//Base human is 2 - var/invis_view = SEE_INVISIBLE_LIVING - var/invis_override = 0 //Override to allow glasses to set higher than normal see_invis - var/lighting_alpha - var/list/icon/current = list() //the current hud icons - var/vision_correction = 0 //does wearing these glasses correct some of our vision defects? - strip_delay = 20 - equip_delay_other = 25 - resistance_flags = 0 + /* SEE_SELF // can see self, no matter what SEE_MOBS // can see all mobs, no matter what @@ -207,455 +191,6 @@ SEE_PIXELS// if an object is located on an unlit area, but some of its pixels ar BLIND // can't see anything */ - -//Gloves -/obj/item/clothing/gloves - name = "gloves" - gender = PLURAL //Carn: for grammarically correct text-parsing - w_class = WEIGHT_CLASS_SMALL - icon = 'icons/obj/clothing/gloves.dmi' - siemens_coefficient = 0.5 - body_parts_covered = HANDS - slot_flags = SLOT_GLOVES - attack_verb = list("challenged") - var/transfer_prints = FALSE - strip_delay = 20 - equip_delay_other = 40 - - -/obj/item/clothing/gloves/worn_overlays(isinhands = FALSE) - . = list() - if(!isinhands) - if(damaged_clothes) - . += mutable_appearance('icons/effects/item_damage.dmi', "damagedgloves") - if(blood_DNA) - . += mutable_appearance('icons/effects/blood.dmi', "bloodyhands") - -/obj/item/clothing/gloves/update_clothes_damaged_state(damaging = TRUE) - ..() - if(ismob(loc)) - var/mob/M = loc - M.update_inv_gloves() - -// Called just before an attack_hand(), in mob/UnarmedAttack() -/obj/item/clothing/gloves/proc/Touch(atom/A, proximity) - return 0 // return 1 to cancel attack_hand() - -//Head -/obj/item/clothing/head - name = "head" - icon = 'icons/obj/clothing/hats.dmi' - icon_state = "top_hat" - item_state = "that" - body_parts_covered = HEAD - slot_flags = SLOT_HEAD - var/blockTracking = 0 //For AI tracking - var/can_toggle = null - dynamic_hair_suffix = "+generic" - -/obj/item/clothing/head/Initialize() - . = ..() - if(ishuman(loc) && dynamic_hair_suffix) - var/mob/living/carbon/human/H = loc - H.update_hair() - -/obj/item/clothing/head/worn_overlays(isinhands = FALSE) - . = list() - if(!isinhands) - if(damaged_clothes) - . += mutable_appearance('icons/effects/item_damage.dmi', "damagedhelmet") - if(blood_DNA) - . += mutable_appearance('icons/effects/blood.dmi', "helmetblood") - -/obj/item/clothing/head/update_clothes_damaged_state(damaging = TRUE) - ..() - if(ismob(loc)) - var/mob/M = loc - M.update_inv_head() - -//Neck -/obj/item/clothing/neck - name = "necklace" - icon = 'icons/obj/clothing/neck.dmi' - body_parts_covered = NECK - slot_flags = SLOT_NECK - strip_delay = 40 - equip_delay_other = 40 - -/obj/item/clothing/neck/worn_overlays(isinhands = FALSE) - . = list() - if(!isinhands) - if(body_parts_covered & HEAD) - if(damaged_clothes) - . += mutable_appearance('icons/effects/item_damage.dmi', "damagedmask") - if(blood_DNA) - . += mutable_appearance('icons/effects/blood.dmi', "maskblood") - - -//Mask -/obj/item/clothing/mask - name = "mask" - icon = 'icons/obj/clothing/masks.dmi' - body_parts_covered = HEAD - slot_flags = SLOT_MASK - strip_delay = 40 - equip_delay_other = 40 - var/mask_adjusted = 0 - var/adjusted_flags = null - - -/obj/item/clothing/mask/worn_overlays(isinhands = FALSE) - . = list() - if(!isinhands) - if(body_parts_covered & HEAD) - if(damaged_clothes) - . += mutable_appearance('icons/effects/item_damage.dmi', "damagedmask") - if(blood_DNA) - . += mutable_appearance('icons/effects/blood.dmi', "maskblood") - -/obj/item/clothing/mask/update_clothes_damaged_state(damaging = TRUE) - ..() - if(ismob(loc)) - var/mob/M = loc - M.update_inv_wear_mask() - -//Proc that moves gas/breath masks out of the way, disabling them and allowing pill/food consumption -/obj/item/clothing/mask/proc/adjustmask(mob/living/user) - if(user && user.incapacitated()) - return - mask_adjusted = !mask_adjusted - if(!mask_adjusted) - src.icon_state = initial(icon_state) - gas_transfer_coefficient = initial(gas_transfer_coefficient) - permeability_coefficient = initial(permeability_coefficient) - flags_1 |= visor_flags - flags_inv |= visor_flags_inv - flags_cover |= visor_flags_cover - to_chat(user, "You push \the [src] back into place.") - slot_flags = initial(slot_flags) - else - icon_state += "_up" - to_chat(user, "You push \the [src] out of the way.") - gas_transfer_coefficient = null - permeability_coefficient = null - flags_1 &= ~visor_flags - flags_inv &= ~visor_flags_inv - flags_cover &= ~visor_flags_cover - if(adjusted_flags) - slot_flags = adjusted_flags - if(user) - user.wear_mask_update(src, toggle_off = mask_adjusted) - user.update_action_buttons_icon() //when mask is adjusted out, we update all buttons icon so the user's potential internal tank correctly shows as off. - - - - -//Shoes -/obj/item/clothing/shoes - name = "shoes" - icon = 'icons/obj/clothing/shoes.dmi' - desc = "Comfortable-looking shoes." - gender = PLURAL //Carn: for grammarically correct text-parsing - var/chained = 0 - - body_parts_covered = FEET - slot_flags = SLOT_FEET - - permeability_coefficient = 0.5 - slowdown = SHOES_SLOWDOWN - var/blood_state = BLOOD_STATE_NOT_BLOODY - var/list/bloody_shoes = list(BLOOD_STATE_HUMAN = 0,BLOOD_STATE_XENO = 0, BLOOD_STATE_OIL = 0, BLOOD_STATE_NOT_BLOODY = 0) - var/offset = 0 - var/equipped_before_drop = FALSE - -/obj/item/clothing/shoes/worn_overlays(isinhands = FALSE) - . = list() - if(!isinhands) - var/bloody = 0 - if(blood_DNA) - bloody = 1 - else - bloody = bloody_shoes[BLOOD_STATE_HUMAN] - - if(damaged_clothes) - . += mutable_appearance('icons/effects/item_damage.dmi', "damagedshoe") - if(bloody) - . += mutable_appearance('icons/effects/blood.dmi', "shoeblood") - -/obj/item/clothing/shoes/equipped(mob/user, slot) - . = ..() - if(offset && slot_flags & slotdefine2slotbit(slot)) - user.pixel_y += offset - worn_y_dimension -= (offset * 2) - user.update_inv_shoes() - equipped_before_drop = TRUE - -/obj/item/clothing/shoes/proc/restore_offsets(mob/user) - equipped_before_drop = FALSE - user.pixel_y -= offset - worn_y_dimension = world.icon_size - -/obj/item/clothing/shoes/dropped(mob/user) - if(offset && equipped_before_drop) - restore_offsets(user) - . = ..() - -/obj/item/clothing/shoes/update_clothes_damaged_state(damaging = TRUE) - ..() - if(ismob(loc)) - var/mob/M = loc - M.update_inv_shoes() - -/obj/item/clothing/shoes/clean_blood() - ..() - bloody_shoes = list(BLOOD_STATE_HUMAN = 0,BLOOD_STATE_XENO = 0, BLOOD_STATE_OIL = 0, BLOOD_STATE_NOT_BLOODY = 0) - blood_state = BLOOD_STATE_NOT_BLOODY - if(ismob(loc)) - var/mob/M = loc - M.update_inv_shoes() - -/obj/item/proc/negates_gravity() - return 0 - -//Suit -/obj/item/clothing/suit - icon = 'icons/obj/clothing/suits.dmi' - name = "suit" - var/fire_resist = T0C+100 - allowed = list(/obj/item/tank/internals/emergency_oxygen) - armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 0) - slot_flags = SLOT_OCLOTHING - var/blood_overlay_type = "suit" - var/togglename = null - - -/obj/item/clothing/suit/worn_overlays(isinhands = FALSE) - . = list() - if(!isinhands) - if(damaged_clothes) - . += mutable_appearance('icons/effects/item_damage.dmi', "damaged[blood_overlay_type]") - if(blood_DNA) - . += mutable_appearance('icons/effects/blood.dmi', "[blood_overlay_type]blood") - var/mob/living/carbon/human/M = loc - if(ishuman(M) && M.w_uniform) - var/obj/item/clothing/under/U = M.w_uniform - if(istype(U) && U.attached_accessory) - var/obj/item/clothing/accessory/A = U.attached_accessory - if(A.above_suit) - . += U.accessory_overlay - -/obj/item/clothing/suit/update_clothes_damaged_state(damaging = TRUE) - ..() - if(ismob(loc)) - var/mob/M = loc - M.update_inv_wear_suit() - -//Spacesuit -//Note: Everything in modules/clothing/spacesuits should have the entire suit grouped together. -// Meaning the the suit is defined directly after the corrisponding helmet. Just like below! -/obj/item/clothing/head/helmet/space - name = "space helmet" - icon_state = "spaceold" - desc = "A special helmet with solar UV shielding to protect your eyes from harmful rays." - flags_1 = STOPSPRESSUREDMAGE_1 | THICKMATERIAL_1 - item_state = "spaceold" - permeability_coefficient = 0.01 - armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 50, fire = 80, acid = 70) - flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR - dynamic_hair_suffix = "" - dynamic_fhair_suffix = "" - cold_protection = HEAD - min_cold_protection_temperature = SPACE_HELM_MIN_TEMP_PROTECT - heat_protection = HEAD - max_heat_protection_temperature = SPACE_HELM_MAX_TEMP_PROTECT - flash_protect = 2 - strip_delay = 50 - equip_delay_other = 50 - flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH - resistance_flags = 0 - dog_fashion = null - -/obj/item/clothing/suit/space - name = "space suit" - desc = "A suit that protects against low pressure environments. Has a big 13 on the back." - icon_state = "spaceold" - item_state = "s_suit" - w_class = WEIGHT_CLASS_BULKY - gas_transfer_coefficient = 0.01 - permeability_coefficient = 0.02 - flags_1 = STOPSPRESSUREDMAGE_1 | THICKMATERIAL_1 - body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS - allowed = list(/obj/item/device/flashlight, /obj/item/tank/internals) - slowdown = 1 - armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 50, fire = 80, acid = 70) - flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT - cold_protection = CHEST | GROIN | LEGS | FEET | ARMS | HANDS - min_cold_protection_temperature = SPACE_SUIT_MIN_TEMP_PROTECT - heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS - max_heat_protection_temperature = SPACE_SUIT_MAX_TEMP_PROTECT - strip_delay = 80 - equip_delay_other = 80 - resistance_flags = 0 - -//Under clothing - -/obj/item/clothing/under - icon = 'icons/obj/clothing/uniforms.dmi' - name = "under" - body_parts_covered = CHEST|GROIN|LEGS|ARMS - permeability_coefficient = 0.9 - slot_flags = SLOT_ICLOTHING - armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 0) - var/fitted = FEMALE_UNIFORM_FULL // For use in alternate clothing styles for women - var/has_sensor = HAS_SENSORS // For the crew computer - var/random_sensor = 1 - var/sensor_mode = NO_SENSORS - var/can_adjust = 1 - var/adjusted = NORMAL_STYLE - var/alt_covers_chest = 0 // for adjusted/rolled-down jumpsuits, 0 = exposes chest and arms, 1 = exposes arms only - var/obj/item/clothing/accessory/attached_accessory - var/mutable_appearance/accessory_overlay - var/mutantrace_variation = NO_MUTANTRACE_VARIATION //Are there special sprites for specific situations? Don't use this unless you need to. - -/obj/item/clothing/under/worn_overlays(isinhands = FALSE) - . = list() - if(!isinhands) - - if(damaged_clothes) - . += mutable_appearance('icons/effects/item_damage.dmi', "damageduniform") - if(blood_DNA) - . += mutable_appearance('icons/effects/blood.dmi', "uniformblood") - if(accessory_overlay) - . += accessory_overlay - -/obj/item/clothing/under/attackby(obj/item/I, mob/user, params) - if((has_sensor == BROKEN_SENSORS) && istype(I, /obj/item/stack/cable_coil)) - var/obj/item/stack/cable_coil/C = I - C.use(1) - has_sensor = HAS_SENSORS - to_chat(user,"You repair the suit sensors on [src] with [C].") - return 1 - if(!attach_accessory(I, user)) - return ..() - -/obj/item/clothing/under/update_clothes_damaged_state(damaging = TRUE) - ..() - if(ismob(loc)) - var/mob/M = loc - M.update_inv_w_uniform() - if(has_sensor > NO_SENSORS) - has_sensor = BROKEN_SENSORS - -/obj/item/clothing/under/New() - if(random_sensor) - //make the sensor mode favor higher levels, except coords. - sensor_mode = pick(SENSOR_OFF, SENSOR_LIVING, SENSOR_LIVING, SENSOR_VITALS, SENSOR_VITALS, SENSOR_VITALS, SENSOR_COORDS, SENSOR_COORDS) - adjusted = NORMAL_STYLE - ..() - -/obj/item/clothing/under/equipped(mob/user, slot) - ..() - if(adjusted) - adjusted = NORMAL_STYLE - fitted = initial(fitted) - if(!alt_covers_chest) - body_parts_covered |= CHEST - - if(mutantrace_variation && ishuman(user)) - var/mob/living/carbon/human/H = user - if(DIGITIGRADE in H.dna.species.species_traits) - adjusted = DIGITIGRADE_STYLE - H.update_inv_w_uniform() - - if(attached_accessory && slot != slot_hands && ishuman(user)) - var/mob/living/carbon/human/H = user - attached_accessory.on_uniform_equip(src, user) - if(attached_accessory.above_suit) - H.update_inv_wear_suit() - -/obj/item/clothing/under/dropped(mob/user) - if(attached_accessory) - attached_accessory.on_uniform_dropped(src, user) - if(ishuman(user)) - var/mob/living/carbon/human/H = user - if(attached_accessory.above_suit) - H.update_inv_wear_suit() - - ..() - -/obj/item/clothing/under/proc/attach_accessory(obj/item/I, mob/user, notifyAttach = 1) - . = FALSE - if(istype(I, /obj/item/clothing/accessory)) - var/obj/item/clothing/accessory/A = I - if(attached_accessory) - if(user) - to_chat(user, "[src] already has an accessory.") - return - else - if(user && !user.temporarilyRemoveItemFromInventory(I)) - return - if(!A.attach(src, user)) - return - - if(user && notifyAttach) - to_chat(user, "You attach [I] to [src].") - - var/accessory_color = attached_accessory.item_color - if(!accessory_color) - accessory_color = attached_accessory.icon_state - accessory_overlay = mutable_appearance('icons/mob/accessories.dmi', "[accessory_color]") - accessory_overlay.alpha = attached_accessory.alpha - accessory_overlay.color = attached_accessory.color - - if(ishuman(loc)) - var/mob/living/carbon/human/H = loc - H.update_inv_w_uniform() - H.update_inv_wear_suit() - - return TRUE - -/obj/item/clothing/under/proc/remove_accessory(mob/user) - if(!isliving(user)) - return - if(!can_use(user)) - return - - if(attached_accessory) - var/obj/item/clothing/accessory/A = attached_accessory - attached_accessory.detach(src, user) - if(user.put_in_hands(A)) - to_chat(user, "You detach [A] from [src].") - else - to_chat(user, "You detach [A] from [src] and it falls on the floor.") - - if(ishuman(loc)) - var/mob/living/carbon/human/H = loc - H.update_inv_w_uniform() - H.update_inv_wear_suit() - - -/obj/item/clothing/under/examine(mob/user) - ..() - if(can_adjust) - if(adjusted == ALT_STYLE) - to_chat(user, "Alt-click on [src] to wear it normally.") - else - to_chat(user, "Alt-click on [src] to wear it casually.") - if (has_sensor == BROKEN_SENSORS) - to_chat(user, "Its sensors appear to be shorted out.") - else if(has_sensor > NO_SENSORS) - switch(sensor_mode) - if(SENSOR_OFF) - to_chat(user, "Its sensors appear to be disabled.") - if(SENSOR_LIVING) - to_chat(user, "Its binary life sensors appear to be enabled.") - if(SENSOR_VITALS) - to_chat(user, "Its vital tracker appears to be enabled.") - if(SENSOR_COORDS) - to_chat(user, "Its vital tracker and tracking beacon appear to be enabled.") - if(attached_accessory) - to_chat(user, "\A [attached_accessory] is attached to it.") - /proc/generate_female_clothing(index,t_color,icon,type) var/icon/female_clothing_icon = icon("icon"=icon, "icon_state"=t_color) var/icon/female_s = icon("icon"='icons/mob/uniform.dmi', "icon_state"="[(type == FEMALE_UNIFORM_FULL) ? "female_full" : "female_top"]") @@ -799,4 +334,4 @@ BLIND // can't see anything Shreds.desc = "The sad remains of what used to be [name]." deconstruct(FALSE) else - ..() + ..() \ No newline at end of file diff --git a/code/modules/clothing/ears/ears.dm b/code/modules/clothing/ears/_ears.dm similarity index 100% rename from code/modules/clothing/ears/ears.dm rename to code/modules/clothing/ears/_ears.dm diff --git a/code/modules/clothing/glasses/glasses.dm b/code/modules/clothing/glasses/_glasses.dm similarity index 92% rename from code/modules/clothing/glasses/glasses.dm rename to code/modules/clothing/glasses/_glasses.dm index fb7abd7622..1263c07a91 100644 --- a/code/modules/clothing/glasses/glasses.dm +++ b/code/modules/clothing/glasses/_glasses.dm @@ -1,7 +1,22 @@ +//Glasses /obj/item/clothing/glasses name = "glasses" + icon = 'icons/obj/clothing/glasses.dmi' + w_class = WEIGHT_CLASS_SMALL + flags_cover = GLASSESCOVERSEYES + slot_flags = SLOT_EYES + strip_delay = 20 + equip_delay_other = 25 + resistance_flags = 0 materials = list(MAT_GLASS = 250) - var/glass_colour_type = null //colors your vision when worn + var/vision_flags = 0 + var/darkness_view = 2//Base human is 2 + var/invis_view = SEE_INVISIBLE_LIVING + var/invis_override = 0 //Override to allow glasses to set higher than normal see_invis + var/lighting_alpha + var/list/icon/current = list() //the current hud icons + var/vision_correction = 0 //does wearing these glasses correct some of our vision defects? + var/glass_colour_type //colors your vision when worn /obj/item/clothing/glasses/examine(mob/user) ..() diff --git a/code/modules/clothing/gloves/_gloves.dm b/code/modules/clothing/gloves/_gloves.dm new file mode 100644 index 0000000000..c230b14295 --- /dev/null +++ b/code/modules/clothing/gloves/_gloves.dm @@ -0,0 +1,31 @@ +/obj/item/clothing/gloves + name = "gloves" + gender = PLURAL //Carn: for grammarically correct text-parsing + w_class = WEIGHT_CLASS_SMALL + icon = 'icons/obj/clothing/gloves.dmi' + siemens_coefficient = 0.5 + body_parts_covered = HANDS + slot_flags = SLOT_GLOVES + attack_verb = list("challenged") + var/transfer_prints = FALSE + strip_delay = 20 + equip_delay_other = 40 + + +/obj/item/clothing/gloves/worn_overlays(isinhands = FALSE) + . = list() + if(!isinhands) + if(damaged_clothes) + . += mutable_appearance('icons/effects/item_damage.dmi', "damagedgloves") + if(blood_DNA) + . += mutable_appearance('icons/effects/blood.dmi', "bloodyhands") + +/obj/item/clothing/gloves/update_clothes_damaged_state(damaging = TRUE) + ..() + if(ismob(loc)) + var/mob/M = loc + M.update_inv_gloves() + +// Called just before an attack_hand(), in mob/UnarmedAttack() +/obj/item/clothing/gloves/proc/Touch(atom/A, proximity) + return 0 // return 1 to cancel attack_hand() \ No newline at end of file diff --git a/code/modules/clothing/head/_head.dm b/code/modules/clothing/head/_head.dm new file mode 100644 index 0000000000..8bc8f12dec --- /dev/null +++ b/code/modules/clothing/head/_head.dm @@ -0,0 +1,30 @@ +/obj/item/clothing/head + name = "head" + icon = 'icons/obj/clothing/hats.dmi' + icon_state = "top_hat" + item_state = "that" + body_parts_covered = HEAD + slot_flags = SLOT_HEAD + var/blockTracking = 0 //For AI tracking + var/can_toggle = null + dynamic_hair_suffix = "+generic" + +/obj/item/clothing/head/Initialize() + . = ..() + if(ishuman(loc) && dynamic_hair_suffix) + var/mob/living/carbon/human/H = loc + H.update_hair() + +/obj/item/clothing/head/worn_overlays(isinhands = FALSE) + . = list() + if(!isinhands) + if(damaged_clothes) + . += mutable_appearance('icons/effects/item_damage.dmi', "damagedhelmet") + if(blood_DNA) + . += mutable_appearance('icons/effects/blood.dmi', "helmetblood") + +/obj/item/clothing/head/update_clothes_damaged_state(damaging = TRUE) + ..() + if(ismob(loc)) + var/mob/M = loc + M.update_inv_head() \ No newline at end of file diff --git a/code/modules/clothing/masks/_masks.dm b/code/modules/clothing/masks/_masks.dm new file mode 100644 index 0000000000..eacfa3faea --- /dev/null +++ b/code/modules/clothing/masks/_masks.dm @@ -0,0 +1,53 @@ +/obj/item/clothing/mask + name = "mask" + icon = 'icons/obj/clothing/masks.dmi' + body_parts_covered = HEAD + slot_flags = SLOT_MASK + strip_delay = 40 + equip_delay_other = 40 + var/mask_adjusted = 0 + var/adjusted_flags = null + + +/obj/item/clothing/mask/worn_overlays(isinhands = FALSE) + . = list() + if(!isinhands) + if(body_parts_covered & HEAD) + if(damaged_clothes) + . += mutable_appearance('icons/effects/item_damage.dmi', "damagedmask") + if(blood_DNA) + . += mutable_appearance('icons/effects/blood.dmi', "maskblood") + +/obj/item/clothing/mask/update_clothes_damaged_state(damaging = TRUE) + ..() + if(ismob(loc)) + var/mob/M = loc + M.update_inv_wear_mask() + +//Proc that moves gas/breath masks out of the way, disabling them and allowing pill/food consumption +/obj/item/clothing/mask/proc/adjustmask(mob/living/user) + if(user && user.incapacitated()) + return + mask_adjusted = !mask_adjusted + if(!mask_adjusted) + src.icon_state = initial(icon_state) + gas_transfer_coefficient = initial(gas_transfer_coefficient) + permeability_coefficient = initial(permeability_coefficient) + flags_1 |= visor_flags + flags_inv |= visor_flags_inv + flags_cover |= visor_flags_cover + to_chat(user, "You push \the [src] back into place.") + slot_flags = initial(slot_flags) + else + icon_state += "_up" + to_chat(user, "You push \the [src] out of the way.") + gas_transfer_coefficient = null + permeability_coefficient = null + flags_1 &= ~visor_flags + flags_inv &= ~visor_flags_inv + flags_cover &= ~visor_flags_cover + if(adjusted_flags) + slot_flags = adjusted_flags + if(user) + user.wear_mask_update(src, toggle_off = mask_adjusted) + user.update_action_buttons_icon() //when mask is adjusted out, we update all buttons icon so the user's potential internal tank correctly shows as off. \ No newline at end of file diff --git a/code/modules/clothing/neck/neck.dm b/code/modules/clothing/neck/_neck.dm similarity index 91% rename from code/modules/clothing/neck/neck.dm rename to code/modules/clothing/neck/_neck.dm index af3049aefd..74e2f70c37 100644 --- a/code/modules/clothing/neck/neck.dm +++ b/code/modules/clothing/neck/_neck.dm @@ -1,3 +1,20 @@ +/obj/item/clothing/neck + name = "necklace" + icon = 'icons/obj/clothing/neck.dmi' + body_parts_covered = NECK + slot_flags = SLOT_NECK + strip_delay = 40 + equip_delay_other = 40 + +/obj/item/clothing/neck/worn_overlays(isinhands = FALSE) + . = list() + if(!isinhands) + if(body_parts_covered & HEAD) + if(damaged_clothes) + . += mutable_appearance('icons/effects/item_damage.dmi', "damagedmask") + if(blood_DNA) + . += mutable_appearance('icons/effects/blood.dmi', "maskblood") + /obj/item/clothing/neck/tie name = "tie" desc = "A neosilk clip-on tie." diff --git a/code/modules/clothing/shoes/_shoes.dm b/code/modules/clothing/shoes/_shoes.dm new file mode 100644 index 0000000000..d71827df95 --- /dev/null +++ b/code/modules/clothing/shoes/_shoes.dm @@ -0,0 +1,65 @@ +/obj/item/clothing/shoes + name = "shoes" + icon = 'icons/obj/clothing/shoes.dmi' + desc = "Comfortable-looking shoes." + gender = PLURAL //Carn: for grammarically correct text-parsing + var/chained = 0 + + body_parts_covered = FEET + slot_flags = SLOT_FEET + + permeability_coefficient = 0.5 + slowdown = SHOES_SLOWDOWN + var/blood_state = BLOOD_STATE_NOT_BLOODY + var/list/bloody_shoes = list(BLOOD_STATE_HUMAN = 0,BLOOD_STATE_XENO = 0, BLOOD_STATE_OIL = 0, BLOOD_STATE_NOT_BLOODY = 0) + var/offset = 0 + var/equipped_before_drop = FALSE + +/obj/item/clothing/shoes/worn_overlays(isinhands = FALSE) + . = list() + if(!isinhands) + var/bloody = 0 + if(blood_DNA) + bloody = 1 + else + bloody = bloody_shoes[BLOOD_STATE_HUMAN] + + if(damaged_clothes) + . += mutable_appearance('icons/effects/item_damage.dmi', "damagedshoe") + if(bloody) + . += mutable_appearance('icons/effects/blood.dmi', "shoeblood") + +/obj/item/clothing/shoes/equipped(mob/user, slot) + . = ..() + if(offset && slot_flags & slotdefine2slotbit(slot)) + user.pixel_y += offset + worn_y_dimension -= (offset * 2) + user.update_inv_shoes() + equipped_before_drop = TRUE + +/obj/item/clothing/shoes/proc/restore_offsets(mob/user) + equipped_before_drop = FALSE + user.pixel_y -= offset + worn_y_dimension = world.icon_size + +/obj/item/clothing/shoes/dropped(mob/user) + if(offset && equipped_before_drop) + restore_offsets(user) + . = ..() + +/obj/item/clothing/shoes/update_clothes_damaged_state(damaging = TRUE) + ..() + if(ismob(loc)) + var/mob/M = loc + M.update_inv_shoes() + +/obj/item/clothing/shoes/clean_blood() + ..() + bloody_shoes = list(BLOOD_STATE_HUMAN = 0,BLOOD_STATE_XENO = 0, BLOOD_STATE_OIL = 0, BLOOD_STATE_NOT_BLOODY = 0) + blood_state = BLOOD_STATE_NOT_BLOODY + if(ismob(loc)) + var/mob/M = loc + M.update_inv_shoes() + +/obj/item/proc/negates_gravity() + return 0 \ No newline at end of file diff --git a/code/modules/clothing/spacesuits/_spacesuits.dm b/code/modules/clothing/spacesuits/_spacesuits.dm new file mode 100644 index 0000000000..32caa3adf4 --- /dev/null +++ b/code/modules/clothing/spacesuits/_spacesuits.dm @@ -0,0 +1,45 @@ +//Note: Everything in modules/clothing/spacesuits should have the entire suit grouped together. +// Meaning the the suit is defined directly after the corrisponding helmet. Just like below! +/obj/item/clothing/head/helmet/space + name = "space helmet" + icon_state = "spaceold" + desc = "A special helmet with solar UV shielding to protect your eyes from harmful rays." + flags_1 = STOPSPRESSUREDMAGE_1 | THICKMATERIAL_1 + item_state = "spaceold" + permeability_coefficient = 0.01 + armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 50, fire = 80, acid = 70) + flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR + dynamic_hair_suffix = "" + dynamic_fhair_suffix = "" + cold_protection = HEAD + min_cold_protection_temperature = SPACE_HELM_MIN_TEMP_PROTECT + heat_protection = HEAD + max_heat_protection_temperature = SPACE_HELM_MAX_TEMP_PROTECT + flash_protect = 2 + strip_delay = 50 + equip_delay_other = 50 + flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH + resistance_flags = 0 + dog_fashion = null + +/obj/item/clothing/suit/space + name = "space suit" + desc = "A suit that protects against low pressure environments. Has a big 13 on the back." + icon_state = "spaceold" + item_state = "s_suit" + w_class = WEIGHT_CLASS_BULKY + gas_transfer_coefficient = 0.01 + permeability_coefficient = 0.02 + flags_1 = STOPSPRESSUREDMAGE_1 | THICKMATERIAL_1 + body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS + allowed = list(/obj/item/device/flashlight, /obj/item/tank/internals) + slowdown = 1 + armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 50, fire = 80, acid = 70) + flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT + cold_protection = CHEST | GROIN | LEGS | FEET | ARMS | HANDS + min_cold_protection_temperature = SPACE_SUIT_MIN_TEMP_PROTECT + heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS + max_heat_protection_temperature = SPACE_SUIT_MAX_TEMP_PROTECT + strip_delay = 80 + equip_delay_other = 80 + resistance_flags = 0 \ No newline at end of file diff --git a/code/modules/clothing/suits/_suits.dm b/code/modules/clothing/suits/_suits.dm new file mode 100644 index 0000000000..e934b77f38 --- /dev/null +++ b/code/modules/clothing/suits/_suits.dm @@ -0,0 +1,31 @@ +/obj/item/clothing/suit + icon = 'icons/obj/clothing/suits.dmi' + name = "suit" + var/fire_resist = T0C+100 + allowed = list(/obj/item/tank/internals/emergency_oxygen) + armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 0) + slot_flags = SLOT_OCLOTHING + var/blood_overlay_type = "suit" + var/togglename = null + + +/obj/item/clothing/suit/worn_overlays(isinhands = FALSE) + . = list() + if(!isinhands) + if(damaged_clothes) + . += mutable_appearance('icons/effects/item_damage.dmi', "damaged[blood_overlay_type]") + if(blood_DNA) + . += mutable_appearance('icons/effects/blood.dmi', "[blood_overlay_type]blood") + var/mob/living/carbon/human/M = loc + if(ishuman(M) && M.w_uniform) + var/obj/item/clothing/under/U = M.w_uniform + if(istype(U) && U.attached_accessory) + var/obj/item/clothing/accessory/A = U.attached_accessory + if(A.above_suit) + . += U.accessory_overlay + +/obj/item/clothing/suit/update_clothes_damaged_state(damaging = TRUE) + ..() + if(ismob(loc)) + var/mob/M = loc + M.update_inv_wear_suit() \ No newline at end of file diff --git a/code/modules/clothing/under/_under.dm b/code/modules/clothing/under/_under.dm new file mode 100644 index 0000000000..33eeb03c7e --- /dev/null +++ b/code/modules/clothing/under/_under.dm @@ -0,0 +1,156 @@ +/obj/item/clothing/under + icon = 'icons/obj/clothing/uniforms.dmi' + name = "under" + body_parts_covered = CHEST|GROIN|LEGS|ARMS + permeability_coefficient = 0.9 + slot_flags = SLOT_ICLOTHING + armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 0) + var/fitted = FEMALE_UNIFORM_FULL // For use in alternate clothing styles for women + var/has_sensor = HAS_SENSORS // For the crew computer + var/random_sensor = 1 + var/sensor_mode = NO_SENSORS + var/can_adjust = 1 + var/adjusted = NORMAL_STYLE + var/alt_covers_chest = 0 // for adjusted/rolled-down jumpsuits, 0 = exposes chest and arms, 1 = exposes arms only + var/obj/item/clothing/accessory/attached_accessory + var/mutable_appearance/accessory_overlay + var/mutantrace_variation = NO_MUTANTRACE_VARIATION //Are there special sprites for specific situations? Don't use this unless you need to. + +/obj/item/clothing/under/worn_overlays(isinhands = FALSE) + . = list() + if(!isinhands) + + if(damaged_clothes) + . += mutable_appearance('icons/effects/item_damage.dmi', "damageduniform") + if(blood_DNA) + . += mutable_appearance('icons/effects/blood.dmi', "uniformblood") + if(accessory_overlay) + . += accessory_overlay + +/obj/item/clothing/under/attackby(obj/item/I, mob/user, params) + if((has_sensor == BROKEN_SENSORS) && istype(I, /obj/item/stack/cable_coil)) + var/obj/item/stack/cable_coil/C = I + C.use(1) + has_sensor = HAS_SENSORS + to_chat(user,"You repair the suit sensors on [src] with [C].") + return 1 + if(!attach_accessory(I, user)) + return ..() + +/obj/item/clothing/under/update_clothes_damaged_state(damaging = TRUE) + ..() + if(ismob(loc)) + var/mob/M = loc + M.update_inv_w_uniform() + if(has_sensor > NO_SENSORS) + has_sensor = BROKEN_SENSORS + +/obj/item/clothing/under/New() + if(random_sensor) + //make the sensor mode favor higher levels, except coords. + sensor_mode = pick(SENSOR_OFF, SENSOR_LIVING, SENSOR_LIVING, SENSOR_VITALS, SENSOR_VITALS, SENSOR_VITALS, SENSOR_COORDS, SENSOR_COORDS) + adjusted = NORMAL_STYLE + ..() + +/obj/item/clothing/under/equipped(mob/user, slot) + ..() + if(adjusted) + adjusted = NORMAL_STYLE + fitted = initial(fitted) + if(!alt_covers_chest) + body_parts_covered |= CHEST + + if(mutantrace_variation && ishuman(user)) + var/mob/living/carbon/human/H = user + if(DIGITIGRADE in H.dna.species.species_traits) + adjusted = DIGITIGRADE_STYLE + H.update_inv_w_uniform() + + if(attached_accessory && slot != slot_hands && ishuman(user)) + var/mob/living/carbon/human/H = user + attached_accessory.on_uniform_equip(src, user) + if(attached_accessory.above_suit) + H.update_inv_wear_suit() + +/obj/item/clothing/under/dropped(mob/user) + if(attached_accessory) + attached_accessory.on_uniform_dropped(src, user) + if(ishuman(user)) + var/mob/living/carbon/human/H = user + if(attached_accessory.above_suit) + H.update_inv_wear_suit() + + ..() + +/obj/item/clothing/under/proc/attach_accessory(obj/item/I, mob/user, notifyAttach = 1) + . = FALSE + if(istype(I, /obj/item/clothing/accessory)) + var/obj/item/clothing/accessory/A = I + if(attached_accessory) + if(user) + to_chat(user, "[src] already has an accessory.") + return + else + if(user && !user.temporarilyRemoveItemFromInventory(I)) + return + if(!A.attach(src, user)) + return + + if(user && notifyAttach) + to_chat(user, "You attach [I] to [src].") + + var/accessory_color = attached_accessory.item_color + if(!accessory_color) + accessory_color = attached_accessory.icon_state + accessory_overlay = mutable_appearance('icons/mob/accessories.dmi', "[accessory_color]") + accessory_overlay.alpha = attached_accessory.alpha + accessory_overlay.color = attached_accessory.color + + if(ishuman(loc)) + var/mob/living/carbon/human/H = loc + H.update_inv_w_uniform() + H.update_inv_wear_suit() + + return TRUE + +/obj/item/clothing/under/proc/remove_accessory(mob/user) + if(!isliving(user)) + return + if(!can_use(user)) + return + + if(attached_accessory) + var/obj/item/clothing/accessory/A = attached_accessory + attached_accessory.detach(src, user) + if(user.put_in_hands(A)) + to_chat(user, "You detach [A] from [src].") + else + to_chat(user, "You detach [A] from [src] and it falls on the floor.") + + if(ishuman(loc)) + var/mob/living/carbon/human/H = loc + H.update_inv_w_uniform() + H.update_inv_wear_suit() + + +/obj/item/clothing/under/examine(mob/user) + ..() + if(can_adjust) + if(adjusted == ALT_STYLE) + to_chat(user, "Alt-click on [src] to wear it normally.") + else + to_chat(user, "Alt-click on [src] to wear it casually.") + if (has_sensor == BROKEN_SENSORS) + to_chat(user, "Its sensors appear to be shorted out.") + else if(has_sensor > NO_SENSORS) + switch(sensor_mode) + if(SENSOR_OFF) + to_chat(user, "Its sensors appear to be disabled.") + if(SENSOR_LIVING) + to_chat(user, "Its binary life sensors appear to be enabled.") + if(SENSOR_VITALS) + to_chat(user, "Its vital tracker appears to be enabled.") + if(SENSOR_COORDS) + to_chat(user, "Its vital tracker and tracking beacon appear to be enabled.") + if(attached_accessory) + to_chat(user, "\A [attached_accessory] is attached to it.") \ No newline at end of file diff --git a/tgstation.dme b/tgstation.dme index 6c81456840..06341d7411 100755 --- a/tgstation.dme +++ b/tgstation.dme @@ -1262,15 +1262,23 @@ #include "code\modules\client\verbs\who.dm" #include "code\modules\clothing\chameleon.dm" #include "code\modules\clothing\clothing.dm" -#include "code\modules\clothing\ears\ears.dm" +#include "code\modules\clothing\ears\_ears.dm" +#include "code\modules\clothing\glasses\_glasses.dm" #include "code\modules\clothing\glasses\engine_goggles.dm" -#include "code\modules\clothing\glasses\glasses.dm" #include "code\modules\clothing\glasses\hud.dm" +<<<<<<< HEAD #include "code\modules\clothing\glasses\vg_glasses.dm" #include "code\modules\clothing\gloves\boxing.dm" #include "code\modules\clothing\gloves\color.dm" #include "code\modules\clothing\gloves\miscellaneous.dm" #include "code\modules\clothing\gloves\vg_gloves.dm" +======= +#include "code\modules\clothing\gloves\_gloves.dm" +#include "code\modules\clothing\gloves\boxing.dm" +#include "code\modules\clothing\gloves\color.dm" +#include "code\modules\clothing\gloves\miscellaneous.dm" +#include "code\modules\clothing\head\_head.dm" +>>>>>>> f910aa9... Merge pull request #31960 from lzimann/split #include "code\modules\clothing\head\beanie.dm" #include "code\modules\clothing\head\cit_hats.dm" #include "code\modules\clothing\head\collectable.dm" @@ -1280,29 +1288,46 @@ #include "code\modules\clothing\head\misc.dm" #include "code\modules\clothing\head\misc_special.dm" #include "code\modules\clothing\head\soft_caps.dm" +<<<<<<< HEAD #include "code\modules\clothing\head\vg_hats.dm" +======= +#include "code\modules\clothing\masks\_masks.dm" +>>>>>>> f910aa9... Merge pull request #31960 from lzimann/split #include "code\modules\clothing\masks\boxing.dm" #include "code\modules\clothing\masks\breath.dm" #include "code\modules\clothing\masks\gasmask.dm" #include "code\modules\clothing\masks\hailer.dm" #include "code\modules\clothing\masks\miscellaneous.dm" +<<<<<<< HEAD #include "code\modules\clothing\masks\vg_masks.dm" #include "code\modules\clothing\neck\neck.dm" +======= +#include "code\modules\clothing\neck\_neck.dm" +>>>>>>> f910aa9... Merge pull request #31960 from lzimann/split #include "code\modules\clothing\outfits\ert.dm" #include "code\modules\clothing\outfits\event.dm" #include "code\modules\clothing\outfits\standard.dm" +#include "code\modules\clothing\shoes\_shoes.dm" #include "code\modules\clothing\shoes\bananashoes.dm" #include "code\modules\clothing\shoes\colour.dm" #include "code\modules\clothing\shoes\magboots.dm" #include "code\modules\clothing\shoes\miscellaneous.dm" +<<<<<<< HEAD #include "code\modules\clothing\shoes\vg_shoes.dm" +======= +#include "code\modules\clothing\spacesuits\_spacesuits.dm" +>>>>>>> f910aa9... Merge pull request #31960 from lzimann/split #include "code\modules\clothing\spacesuits\chronosuit.dm" #include "code\modules\clothing\spacesuits\flightsuit.dm" #include "code\modules\clothing\spacesuits\hardsuit.dm" #include "code\modules\clothing\spacesuits\miscellaneous.dm" #include "code\modules\clothing\spacesuits\plasmamen.dm" #include "code\modules\clothing\spacesuits\syndi.dm" +<<<<<<< HEAD #include "code\modules\clothing\spacesuits\vg_spess.dm" +======= +#include "code\modules\clothing\suits\_suits.dm" +>>>>>>> f910aa9... Merge pull request #31960 from lzimann/split #include "code\modules\clothing\suits\armor.dm" #include "code\modules\clothing\suits\bio.dm" #include "code\modules\clothing\suits\cloaks.dm" @@ -1313,6 +1338,7 @@ #include "code\modules\clothing\suits\utility.dm" #include "code\modules\clothing\suits\vg_suits.dm" #include "code\modules\clothing\suits\wiz_robe.dm" +#include "code\modules\clothing\under\_under.dm" #include "code\modules\clothing\under\accessories.dm" #include "code\modules\clothing\under\color.dm" #include "code\modules\clothing\under\miscellaneous.dm"