[MIRROR] clothing _vr dmi cleanup: boots (#11446)

Co-authored-by: Killian <49700375+KillianKirilenko@users.noreply.github.com>
Co-authored-by: C.L. <killer65311@gmail.com>
This commit is contained in:
CHOMPStation2StaffMirrorBot
2025-08-16 11:58:04 -07:00
committed by GitHub
parent c6a3c0257c
commit 51a3f5f496
14 changed files with 148 additions and 198 deletions

View File

@@ -647,12 +647,24 @@
species_restricted = list("exclude",SPECIES_TESHARI, SPECIES_VOX)
sprite_sheets = list(
SPECIES_TESHARI = 'icons/inventory/feet/mob_teshari.dmi',
SPECIES_VOX = 'icons/inventory/feet/mob_vox.dmi'
SPECIES_VOX = 'icons/inventory/feet/mob_vox.dmi',
SPECIES_WEREBEAST = 'icons/inventory/feet/mob_werebeast.dmi'
)
drop_sound = 'sound/items/drop/shoes.ogg'
pickup_sound = 'sound/items/pickup/shoes.ogg'
update_icon_define_digi = "icons/inventory/feet/mob_digi.dmi"
var/list/inside_emotes = list()
var/recent_squish = 0
/obj/item/clothing/shoes/Initialize(mapload)
. = ..()
inside_emotes = list(
span_red("You feel weightless for a moment as \the [name] moves upwards."),
span_red("\The [name] are a ride you've got no choice but to participate in as the wearer moves."),
span_red("The wearer of \the [name] moves, pressing down on you."),
span_red("More motion while \the [name] move, feet pressing down against you.")
)
/obj/item/clothing/shoes/Destroy()
if(shoes)
@@ -745,25 +757,151 @@
. = ..()
update_icon()
// CHOMPEdit Begin - tweaking handle_movement for inshoes steppies
/obj/item/clothing/shoes/proc/handle_movement(var/turf/walking, var/running, var/mob/living/carbon/human/pred)
if(!recent_squish && istype(pred))
recent_squish = 1
spawn(40) // Cooldown reduced from 100 to 40. Faster, but not that spammy
recent_squish = 0
VARSET_IN(src, recent_squish, FALSE, 4 SECONDS) // Reset the recent squish timer
for(var/mob/living/M in contents)
if(pred.step_mechanics_pref && M.step_mechanics_pref)
src.handle_inshoe_stepping(pred, M)
else if (prob(1)) // Same old inshoe mechanics
var/emote = pick(inside_emotes)
to_chat(M,emote)
return //CHOMPEDIT End
return
//In shoe steppies!
/obj/item/clothing/shoes/proc/handle_inshoe_stepping(var/mob/living/carbon/human/pred, var/mob/living/carbon/human/prey)
if(!istype(pred)) return //Sorry, inshoe steppies only for carbon/human/ for now. Based on the regular stepping mechanics
if(!istype(prey)) return
if(!pred.canmove || pred.buckled) return //We can't be stepping on anyone if buckled or incapable of moving
if(pred in buckled_mobs) return
if(pred.flying) return //If we're flying, can't really step.
// I kept interactions very similar to normal steppies, and removed some attack logs unless harm intent:
// I_HELP: No painful description, messages only sent to prey. Similar to inshoe steppies from before.
// I_DISARM: Painful yet harmless descriptions, weaken on walk. Attack logs on weaken.
// I_GRAB: Grabby/Squishing descriptions, weaken on walk. Attack logs on weaken.
// I_HARM: Rand .5-1.5 multiplied by .25 min or 1.75 max, multiplied by 3.5 on walk. Ranges from .125 min to 9.1875 max damage to each limb
var/message_pred = null
var/message_prey = null
switch(pred.a_intent)
if(I_HELP)
if(prob(10)) //Reducing spam exclusively on I_HELP. Still more frequent than old pitiful prob(1)
if(pred.m_intent == I_RUN)
message_prey = pick(
"You feel weightless for a brief moment as \the [name] move upwards.",
"[pred]'s weight bears down on you with each of their steps.",
"\The [name] are a ride you've got no choice but to participate in as the wearer moves.",
"The wearer of \the [name] moves, and their feet press down on you with each step.",
"With each step, you're sandwiched again between [pred]'s feet and the insole of their boots.",
"As [pred] moves, their foot presses you tightly against the insole of their boots with each step.")
else
message_prey = pick(
"You feel weightless for a brief moment as \the [name] move upwards.",
"[pred]'s weight bears down on you with each of the calm steps of their walk.",
"\The [name] are a ride you've got no choice but to participate in as the wearer walks.",
"The wearer of \the [name] walks, and their feet press down on you heavily with each step.",
"With each step of their unhurried walk, you're tightly sandwiched between [pred]'s feet and the insole of their boots.",
"As [pred] walks, their foot presses you tightly against the insole of their boots with each step.")
to_chat(prey, span_emote_subtle(span_italics("[message_prey]")))
return //No message for pred if I_HELP
if(I_DISARM)
if(pred.m_intent == I_RUN)
message_pred = "You step on [prey], squishing and pinning them within your [name]!"
message_prey = "[pred] steps on you, squishing and pinning you within their [name]!"
else
message_pred = "You firmly push your foot down on [prey], painfully but harmlessly pinning them to the insole of your [name]!"
message_prey = "[pred] firmly pushes their foot down on you, painfully but harmlessly pinning you to the insole of their [name]!"
prey.Weaken(5) // For flavour, only noticed prey if tossed out of shoe
add_attack_logs(pred, prey, "Pinned inshoe (walk, weaken(5))")
if(I_GRAB)
if(pred.m_intent == I_RUN)
message_pred = "You step down onto [prey], squishing and trapping them inbetween your toes!"
message_prey = "[pred] steps down on you, squishing and trapping you inbetween their toes!"
else
message_pred = "You pin [prey] down against the insole of your [name] with your foot, your toes curling up around their body, tightly trapping them inbetween them!"
message_prey = "[pred] pins you down against the insole of their [name] with their foot, their toes curling up around your body, tighly trapping you inbetween them!"
prey.Weaken(5) // For flavour, only noticed prey if tossed out of shoe
add_attack_logs(pred, prey, "Grabbed inshoe (walk, weaken(5))")
if(I_HURT)
var/size_damage_multiplier = pred.size_multiplier - prey.size_multiplier
if(size_damage_multiplier < 0) // In case of odd situations such as wearing a shoe containing someone bigger than you.
size_damage_multiplier = 0
//Assuming regular micro pickup sizes outside dorms, size_damage multiplier should range from .25 to 1.75... right?
var/damage = (rand(5, 15) * size_damage_multiplier) / 10 // This will sting, but not kill unless pred walks. Will range from .125 to 2.625 damage, randomly, to each limb
if(pred.m_intent == I_RUN)
message_pred = "You carelessly step down onto [prey], crushing them within your [name]!"
message_prey = "[pred] steps carelessly on your body, crushing you within their [name]!"
add_attack_logs(pred, prey, "Crushed inshoe (run, about [damage] damage per limb)")
else
message_pred = "You methodically place your foot down upon [prey]'s body, applying pressure, crushing them against the insole of your [name]!"
message_prey = "[pred] methodically places their foot upon your body, applying pressure, crushing you against the insole of their [name]!"
damage *= 3.5 //Walking damage multiplier
add_attack_logs(pred, prey, "Crushed inshoe (walk, about [damage] damage per limb)")
for(var/obj/item/organ/external/I in prey.organs)
// Running Total: 1.50 damage min, 28.875 damage max, depending on size & RNG.
// Walking Total: 5.25 damage min, 101.0625 damage max, depending on size & RNG. Ouch.
I.take_damage(damage, 0)
if(message_pred != null)
to_chat(pred, span_warning(message_pred))
to_chat(prey, span_warning(message_prey))
return
/obj/item/clothing/shoes/update_clothing_icon()
if (ismob(src.loc))
var/mob/M = src.loc
M.update_inv_shoes()
/obj/item/clothing/shoes/attack_self(var/mob/user)
for(var/mob/M in src)
if(isvoice(M)) //Don't knock voices out!
continue
M.forceMove(get_turf(user))
to_chat(M, span_warning("[user] shakes you out of \the [src]!"))
to_chat(user, span_notice("You shake [M] out of \the [src]!"))
..()
/obj/item/clothing/shoes/container_resist(mob/living/micro)
var/mob/living/carbon/human/macro = loc
if(isvoice(micro)) //Voices shouldn't be able to resist but we have this here just in case.
return
if(!istype(macro))
to_chat(micro, span_notice("You start to climb out of [src]!"))
if(do_after(micro, 50, src))
to_chat(micro, span_notice("You climb out of [src]!"))
micro.forceMove(loc)
return
var/escape_message_micro = "You start to climb out of [src]!"
var/escape_message_macro = "Something is trying to climb out of your [src]!"
var/escape_time = 60
if(macro.shoes == src)
escape_message_micro = "You start to climb around the larger creature's feet and ankles!"
escape_time = 100
to_chat(micro, span_notice("[escape_message_micro]"))
to_chat(macro, span_danger("[escape_message_macro]"))
if(!do_after(micro, escape_time, macro))
to_chat(micro, span_danger("You're pinned underfoot!"))
to_chat(macro, span_danger("You pin the escapee underfoot!"))
return
to_chat(micro, span_notice("You manage to escape [src]!"))
to_chat(macro, span_danger("Someone has climbed out of your [src]!"))
micro.forceMove(macro.loc)
///////////////////////////////////////////////////////////////////////
//Suit

View File

@@ -1,35 +1,6 @@
/obj/item/clothing
var/recent_struggle = 0
/obj/item/clothing/shoes
var/list/inside_emotes = list()
var/recent_squish = 0
sprite_sheets = list(
SPECIES_TESHARI = 'icons/inventory/feet/mob_teshari.dmi',
SPECIES_VOX = 'icons/inventory/feet/mob_vox.dmi',
SPECIES_WEREBEAST = 'icons/inventory/feet/mob_vr_werebeast.dmi')
/obj/item/clothing/shoes/Initialize(mapload)
inside_emotes = list(
span_red("You feel weightless for a moment as \the [name] moves upwards."),
span_red("\The [name] are a ride you've got no choice but to participate in as the wearer moves."),
span_red("The wearer of \the [name] moves, pressing down on you."),
span_red("More motion while \the [name] move, feet pressing down against you.")
)
. = ..()
/* //Must be handled in clothing.dm
/obj/item/clothing/shoes/proc/handle_movement(var/turf/walking, var/running)
if(prob(1) && !recent_squish)
recent_squish = 1
spawn(100)
recent_squish = 0
for(var/mob/living/M in contents)
var/emote = pick(inside_emotes)
to_chat(M,emote)
return
*/
//This is a crazy 'sideways' override.
/obj/item/clothing/shoes/attackby(var/obj/item/I, var/mob/user)
if(istype(I,/obj/item/holder/micro))
@@ -51,46 +22,6 @@
else
..()
/obj/item/clothing/shoes/attack_self(var/mob/user)
for(var/mob/M in src)
if(isvoice(M)) //Don't knock voices out!
continue
M.forceMove(get_turf(user))
to_chat(M, span_warning("[user] shakes you out of \the [src]!"))
to_chat(user, span_notice("You shake [M] out of \the [src]!"))
..()
/obj/item/clothing/shoes/container_resist(mob/living/micro)
var/mob/living/carbon/human/macro = loc
if(isvoice(micro)) //Voices shouldn't be able to resist but we have this here just in case.
return
if(!istype(macro))
to_chat(micro, span_notice("You start to climb out of [src]!"))
if(do_after(micro, 50, src))
to_chat(micro, span_notice("You climb out of [src]!"))
micro.forceMove(loc)
return
var/escape_message_micro = "You start to climb out of [src]!"
var/escape_message_macro = "Something is trying to climb out of your [src]!"
var/escape_time = 60
if(macro.shoes == src)
escape_message_micro = "You start to climb around the larger creature's feet and ankles!"
escape_time = 100
to_chat(micro, span_notice("[escape_message_micro]"))
to_chat(macro, span_danger("[escape_message_macro]"))
if(!do_after(micro, escape_time, macro))
to_chat(micro, span_danger("You're pinned underfoot!"))
to_chat(macro, span_danger("You pin the escapee underfoot!"))
return
to_chat(micro, span_notice("You manage to escape [src]!"))
to_chat(macro, span_danger("Someone has climbed out of your [src]!"))
micro.forceMove(macro.loc)
/obj/item/clothing/gloves
sprite_sheets = list(
SPECIES_TESHARI = 'icons/inventory/hands/mob_teshari.dmi',

View File

@@ -266,3 +266,8 @@
name = "half moon boots"
desc = "Flexible and tight, these boots ensure the wearer will be leaving a solid impression without sacrificing mobility."
icon_state = "half_moon"
/obj/item/clothing/shoes/boots/hoof
name = "hoofboots"
desc = "A pair of high-heeled boots with hooves on the front of the soles, for use with a hobby horse or to disguise your footprints."
icon_state = "hoofboots"

View File

@@ -1,6 +0,0 @@
/obj/item/clothing/shoes/boots/hoof
name = "hoofboots"
desc = "A pair of high-heeled boots with hooves on the front of the soles, for use with a hobby horse or to disguise your footprints."
icon_state = "hoofboots"
icon = 'icons/inventory/feet/item_vr.dmi'
icon_override = 'icons/inventory/feet/mob_vr.dmi'

View File

@@ -2,5 +2,3 @@
name = "imperial leg guards"
desc = "Good for Roman around."
icon_state = "ge_boots"
icon = 'icons/inventory/feet/item_vr.dmi'
icon_override = 'icons/inventory/feet/mob_vr.dmi'

View File

@@ -3,16 +3,12 @@
desc = "A pair of costume boots fashioned after bird talons."
icon_state = "griffinboots"
item_state = "griffinboots"
icon = 'icons/inventory/feet/item_vr.dmi'
icon_override = 'icons/inventory/feet/mob_vr.dmi'
/obj/item/clothing/shoes/bhop
name = "jump boots"
desc = "A specialized pair of combat boots with a built-in propulsion system for rapid foward movement."
icon_state = "jetboots"
item_state = "jetboots"
icon = 'icons/inventory/feet/item_vr.dmi'
icon_override = 'icons/inventory/feet/mob_vr.dmi'
// resistance_flags = FIRE_PROOF
actions_types = list(/datum/action/item_action/activate_jump_boots)
permeability_coefficient = 0.05
@@ -44,8 +40,6 @@
/obj/item/clothing/shoes/magboots/adv
name = "advanced magboots"
desc = "Advanced magnetic boots for a trained user. They have a lower magnetic force, allowing the user to move more quickly."
icon = 'icons/inventory/feet/item_vr.dmi'
icon_override = 'icons/inventory/feet/mob_vr.dmi'
icon_state = "advmag0"
item_flags = PHORONGUARD
@@ -66,8 +60,6 @@
desc = "A pair of olde knight boots."
icon_state = "knight_boots1"
item_state = "knight_boots1"
icon = 'icons/inventory/feet/item_vr.dmi'
icon_override = 'icons/inventory/feet/item_vr.dmi'
armor = list(melee = 80, bullet = 50, laser = 10, energy = 0, bomb = 0, bio = 0, rad = 0)
/obj/item/clothing/shoes/knight/black
@@ -82,8 +74,6 @@
desc = "A pair of olde knight boots."
icon_state = "knight_boots1"
item_state = "knight_boots1"
icon = 'icons/inventory/feet/item_vr.dmi'
icon_override = 'icons/inventory/feet/item_vr.dmi'
/obj/item/clothing/shoes/knight_costume/black
name = "knight boots"
@@ -95,15 +85,11 @@
/obj/item/clothing/shoes/antediluvian
name = "antediluvian legwraps"
desc = "A pair of wraps with gold inlay that cut off around the ankle."
icon = 'icons/inventory/feet/item_vr.dmi'
icon_override = 'icons/inventory/feet/mob_vr.dmi'
icon_state = "antediluvian"
item_state = "antediluvian"
//Alternative flats
/obj/item/clothing/shoes/flats/white/color/alt
icon = 'icons/inventory/feet/item_vr.dmi'
icon_override = 'icons/inventory/feet/mob_vr.dmi'
icon_state = "flatsalt"
item_state = "flatsalt"
@@ -112,6 +98,4 @@
desc = "A pair of sandals with thin straps. It emphasizes the ankles!"
icon_state = "sandals_elegant"
item_state = "sandals_elegant"
icon = 'icons/inventory/feet/item_vr.dmi'
icon_override = 'icons/inventory/feet/mob_vr.dmi'
addblends = "sandals_elegant_a"

View File

@@ -320,8 +320,6 @@
sprite_sheets = null
/obj/item/clothing/shoes/magboots/rig/ce/focalpoint
icon = 'icons/inventory/feet/item_vr.dmi'
default_worn_icon = 'icons/inventory/feet/mob_vr.dmi'
icon_state = "techno_rig"
// No animal people sprites for these yet, sad times
species_restricted = list("exclude", SPECIES_TESHARI, SPECIES_VOX, SPECIES_DIONA)
@@ -380,8 +378,6 @@
sprite_sheets = null
/obj/item/clothing/shoes/magboots/rig/hephaestus
icon = 'icons/inventory/feet/item_vr.dmi'
default_worn_icon = 'icons/inventory/feet/mob_vr.dmi'
icon_state = "ihs_rig"
// No animal people sprites for these yet, sad times
species_restricted = list("exclude", SPECIES_TESHARI, SPECIES_VOX, SPECIES_DIONA)
@@ -491,8 +487,6 @@
sprite_sheets_obj = ALL_VR_SPRITE_SHEETS_SUIT_ITEM
/obj/item/clothing/shoes/magboots/rig/ce/baymed
icon = 'icons/inventory/feet/item_vr.dmi'
default_worn_icon = 'icons/inventory/feet/mob_vr.dmi'
icon_state = "medical_rig_bay"
item_state = null
sprite_sheets = null
@@ -557,8 +551,6 @@
sprite_sheets_obj = ALL_VR_SPRITE_SHEETS_SUIT_ITEM
/obj/item/clothing/shoes/magboots/rig/ce/bayeng
icon = 'icons/inventory/feet/item_vr.dmi'
default_worn_icon = 'icons/inventory/feet/mob_vr.dmi'
icon_state = "engineering_rig_bay"
item_state = null
sprite_sheets = null
@@ -621,8 +613,6 @@
sprite_sheets_obj = ALL_VR_SPRITE_SHEETS_SUIT_ITEM
/obj/item/clothing/shoes/magboots/rig/pathfinder
icon = 'icons/inventory/feet/item_vr.dmi'
default_worn_icon = 'icons/inventory/feet/mob_vr.dmi'
icon_state = "pathfinder_rig_bay"
item_state = null
sprite_sheets = null

Binary file not shown.

Before

Width:  |  Height:  |  Size: 37 KiB

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 60 KiB

After

Width:  |  Height:  |  Size: 65 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.6 KiB

View File

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@@ -20,92 +20,3 @@
user.forceMove(src)
return ..()
//In shoe steppies!
/obj/item/clothing/shoes/proc/handle_inshoe_stepping(var/mob/living/carbon/human/pred, var/mob/living/carbon/human/prey)
if(!istype(pred)) return //Sorry, inshoe steppies only for carbon/human/ for now. Based on the regular stepping mechanics
if(!istype(prey)) return
if(!pred.canmove || pred.buckled) return //We can't be stepping on anyone if buckled or incapable of moving
if(pred in buckled_mobs) return
if(pred.flying) return //If we're flying, can't really step.
// I kept interactions very similar to normal steppies, and removed some attack logs unless harm intent:
// I_HELP: No painful description, messages only sent to prey. Similar to inshoe steppies from before.
// I_DISARM: Painful yet harmless descriptions, weaken on walk. Attack logs on weaken.
// I_GRAB: Grabby/Squishing descriptions, weaken on walk. Attack logs on weaken.
// I_HARM: Rand .5-1.5 multiplied by .25 min or 1.75 max, multiplied by 3.5 on walk. Ranges from .125 min to 9.1875 max damage to each limb
var/message_pred = null
var/message_prey = null
switch(pred.a_intent)
if(I_HELP)
if(prob(10)) //Reducing spam exclusively on I_HELP. Still more frequent than old pitiful prob(1)
if(pred.m_intent == I_RUN)
message_prey = pick(
"You feel weightless for a brief moment as \the [name] move upwards.",
"[pred]'s weight bears down on you with each of their steps.",
"\The [name] are a ride you've got no choice but to participate in as the wearer moves.",
"The wearer of \the [name] moves, and their feet press down on you with each step.",
"With each step, you're sandwiched again between [pred]'s feet and the insole of their boots.",
"As [pred] moves, their foot presses you tightly against the insole of their boots with each step.")
else
message_prey = pick(
"You feel weightless for a brief moment as \the [name] move upwards.",
"[pred]'s weight bears down on you with each of the calm steps of their walk.",
"\The [name] are a ride you've got no choice but to participate in as the wearer walks.",
"The wearer of \the [name] walks, and their feet press down on you heavily with each step.",
"With each step of their unhurried walk, you're tightly sandwiched between [pred]'s feet and the insole of their boots.",
"As [pred] walks, their foot presses you tightly against the insole of their boots with each step.")
to_chat(prey, span_emote_subtle(span_italics("[message_prey]")))
return //No message for pred if I_HELP
if(I_DISARM)
if(pred.m_intent == I_RUN)
message_pred = "You step on [prey], squishing and pinning them within your [name]!"
message_prey = "[pred] steps on you, squishing and pinning you within their [name]!"
else
message_pred = "You firmly push your foot down on [prey], painfully but harmlessly pinning them to the insole of your [name]!"
message_prey = "[pred] firmly pushes their foot down on you, painfully but harmlessly pinning you to the insole of their [name]!"
prey.Weaken(5) // For flavour, only noticed prey if tossed out of shoe
add_attack_logs(pred, prey, "Pinned inshoe (walk, weaken(5))")
if(I_GRAB)
if(pred.m_intent == I_RUN)
message_pred = "You step down onto [prey], squishing and trapping them inbetween your toes!"
message_prey = "[pred] steps down on you, squishing and trapping you inbetween their toes!"
else
message_pred = "You pin [prey] down against the insole of your [name] with your foot, your toes curling up around their body, tightly trapping them inbetween them!"
message_prey = "[pred] pins you down against the insole of their [name] with their foot, their toes curling up around your body, tighly trapping you inbetween them!"
prey.Weaken(5) // For flavour, only noticed prey if tossed out of shoe
add_attack_logs(pred, prey, "Grabbed inshoe (walk, weaken(5))")
if(I_HURT)
var/size_damage_multiplier = pred.size_multiplier - prey.size_multiplier
if(size_damage_multiplier < 0) // In case of odd situations such as wearing a shoe containing someone bigger than you.
size_damage_multiplier = 0
//Assuming regular micro pickup sizes outside dorms, size_damage multiplier should range from .25 to 1.75... right?
var/damage = (rand(5, 15) * size_damage_multiplier) / 10 // This will sting, but not kill unless pred walks. Will range from .125 to 2.625 damage, randomly, to each limb
if(pred.m_intent == I_RUN)
message_pred = "You carelessly step down onto [prey], crushing them within your [name]!"
message_prey = "[pred] steps carelessly on your body, crushing you within their [name]!"
add_attack_logs(pred, prey, "Crushed inshoe (run, about [damage] damage per limb)")
else
message_pred = "You methodically place your foot down upon [prey]'s body, applying pressure, crushing them against the insole of your [name]!"
message_prey = "[pred] methodically places their foot upon your body, applying pressure, crushing you against the insole of their [name]!"
damage *= 3.5 //Walking damage multiplier
add_attack_logs(pred, prey, "Crushed inshoe (walk, about [damage] damage per limb)")
for(var/obj/item/organ/external/I in prey.organs)
// Running Total: 1.50 damage min, 28.875 damage max, depending on size & RNG.
// Walking Total: 5.25 damage min, 101.0625 damage max, depending on size & RNG. Ouch.
I.take_damage(damage, 0)
if(message_pred != null)
to_chat(pred, span_warning(message_pred))
to_chat(prey, span_warning(message_prey))
return

View File

@@ -2484,7 +2484,6 @@
#include "code\modules\clothing\masks\tesh_synth_facemask.dm"
#include "code\modules\clothing\masks\voice.dm"
#include "code\modules\clothing\shoes\boots.dm"
#include "code\modules\clothing\shoes\boots_vr.dm"
#include "code\modules\clothing\shoes\colour.dm"
#include "code\modules\clothing\shoes\leg_guards.dm"
#include "code\modules\clothing\shoes\leg_guards_vr.dm"