Some Loadout Additions (#89500)

This commit is contained in:
Jacquerel
2025-02-21 15:48:06 +00:00
committed by Roxy
parent 5767493a09
commit 948241b04d
22 changed files with 208 additions and 67 deletions

View File

@@ -6,6 +6,15 @@
/// Shoes have been tied in knots
#define SHOES_KNOTTED 2
/// Shoes aren't fastened with anything
#define SHOES_SLIPON "absence of laces"
/// Shoes are fastened with laces
#define SHOES_LACED "shoelaces"
/// Shoes are fastened with velcro
#define SHOES_VELCRO "velcro straps"
/// Shoes are fastened with buckled straps
#define SHOES_STRAPS "straps"
//suit sensors: sensor_mode defines
/// Suit sensor is turned off
#define SENSOR_OFF 0

View File

@@ -27,7 +27,7 @@
ears?.adjustEarDamage(10, 15)
to_chat(victim, "<font color='red' size='8'>HONK</font>")
var/obj/item/clothing/shoes/victim_shoes = victim.get_item_by_slot(ITEM_SLOT_FEET)
if(!victim_shoes?.can_be_tied)
if(!victim_shoes || victim_shoes.fastening_type == SHOES_SLIPON)
continue
victim_shoes.adjust_laces(SHOES_KNOTTED)

View File

@@ -1,13 +0,0 @@
/* SKYRAT EDIT REMOVAL
/datum/quirk/item_quirk/colorist
name = "Colorist"
desc = "You like carrying around a hair dye spray to quickly apply color patterns to your hair."
icon = FA_ICON_FILL_DRIP
value = 0
medical_record_text = "Patient enjoys dyeing their hair with pretty colors."
mail_goodies = list(/obj/item/dyespray)
/datum/quirk/item_quirk/colorist/add_unique(client/client_source)
give_item_to_holder(/obj/item/dyespray, list(LOCATION_BACKPACK = ITEM_SLOT_BACKPACK, LOCATION_HANDS = ITEM_SLOT_HANDS))
*/
//SKYRAT EDIT REMOVAL

View File

@@ -8,6 +8,17 @@
. = ..()
ADD_TRAIT(src, TRAIT_CONTRABAND, INNATE_TRAIT)
/// Creates a random poster designed for a certain audience
/obj/item/poster/random_contraband/pinup
name = "random pinup poster"
icon_state = "rolled_poster"
/// List of posters which make you feel a certain type of way
var/static/list/pinup_posters = list(/obj/structure/sign/poster/contraband/lizard, /obj/structure/sign/poster/contraband/lusty_xenomorph)
/obj/item/poster/random_contraband/pinup/Initialize(mapload, obj/structure/sign/poster/new_poster_structure)
poster_type = pick(pinup_posters)
return ..()
/obj/structure/sign/poster/contraband
poster_item_name = "contraband poster"
poster_item_desc = "This poster comes with its own automatic adhesive mechanism, for easy pinning to any vertical surface. Its vulgar themes have marked it as contraband aboard Nanotrasen space facilities."

View File

@@ -9,7 +9,7 @@
return
var/mob/living/carbon/dude = target
var/obj/item/clothing/shoes/sick_kicks = dude.shoes
if (!sick_kicks?.can_be_tied)
if (!sick_kicks || sick_kicks.fastening_type == SHOES_SLIPON)
to_chat(user, span_warning("[dude] does not have knottable shoes!"), confidential = TRUE)
return
sick_kicks.adjust_laces(SHOES_KNOTTED)

View File

@@ -5,7 +5,7 @@
// You do not need to raise this if you are adding new values that have sane defaults.
// Only raise this value when changing the meaning/format/name/layout of an existing value
// where you would want the updater procs below to run
#define SAVEFILE_VERSION_MAX 47
#define SAVEFILE_VERSION_MAX 48
/*
SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Carn
@@ -115,6 +115,11 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
migrate_boolean_sound_prefs_to_default_volume()
if (current_version < 47)
migrate_boolean_sound_prefs_to_default_volume_v2()
if (current_version < 48)
migrate_quirk_to_loadout(
quirk_to_migrate = "Colorist",
new_typepath = /obj/item/dyespray,
)
/// checks through keybindings for outdated unbound keys and updates them
/datum/preferences/proc/check_keybindings()

View File

@@ -20,8 +20,9 @@
var/offset = 0
var/equipped_before_drop = FALSE
///Whether these shoes have laces that can be tied/untied
var/can_be_tied = TRUE
/// How do these shoes stay on?
var/fastening_type = SHOES_LACED
///Are we currently tied? Can either be SHOES_UNTIED, SHOES_TIED, or SHOES_KNOTTED
var/tied = SHOES_TIED
///How long it takes to lace/unlace these shoes
@@ -35,7 +36,7 @@
/obj/item/clothing/shoes/suicide_act(mob/living/carbon/user)
if(prob(50))
user.visible_message(span_suicide("[user] begins tying \the [src] up waaay too tightly! It looks like [user.p_theyre()] trying to commit suicide!"))
user.visible_message(span_suicide("[user] begins fastening \the [src] up waaay too tightly! It looks like [user.p_theyre()] trying to commit suicide!"))
var/obj/item/bodypart/leg/left = user.get_bodypart(BODY_ZONE_L_LEG)
var/obj/item/bodypart/leg/right = user.get_bodypart(BODY_ZONE_R_LEG)
if(left)
@@ -74,9 +75,9 @@
return
if(tied == SHOES_UNTIED)
. += "The shoelaces are untied."
. += "The [fastening_type] are [untied_adjective()]."
else if(tied == SHOES_KNOTTED)
. += "The shoelaces are all knotted together."
. += "The [fastening_type] are all knotted together."
/obj/item/clothing/shoes/visual_equipped(mob/user, slot)
..()
@@ -88,7 +89,7 @@
/obj/item/clothing/shoes/equipped(mob/user, slot)
. = ..()
if(can_be_tied && tied == SHOES_UNTIED)
if(fastening_type != SHOES_SLIPON && tied == SHOES_UNTIED)
our_alert_ref = WEAKREF(user.throw_alert(ALERT_SHOES_KNOT, /atom/movable/screen/alert/shoes/untied))
RegisterSignal(src, COMSIG_SHOES_STEP_ACTION, PROC_REF(check_trip), override=TRUE)
@@ -117,7 +118,7 @@
return icon(SSgreyscale.GetColoredIconByType(/datum/greyscale_config/digitigrade, greyscale_colors), "boots_worn")
/**
* adjust_laces adjusts whether our shoes (assuming they can_be_tied) and tied, untied, or knotted
* adjust_laces adjusts whether our shoes (assuming they can be tied) and tied, untied, or knotted
*
* In addition to setting the state, it will deal with getting rid of alerts if they exist, as well as registering and unregistering the stepping signals
*
@@ -125,10 +126,10 @@
* *
* * state: SHOES_UNTIED, SHOES_TIED, or SHOES_KNOTTED, depending on what you want them to become
* * user: used to check to see if we're the ones unknotting our own laces
* * force_lacing: boolean. if TRUE, ignores can_be_tied
* * force_lacing: boolean. if TRUE, ignores whether we actually have laces
*/
/obj/item/clothing/shoes/proc/adjust_laces(state, mob/user, force_lacing = FALSE)
if(!can_be_tied && !force_lacing)
if(fastening_type == SHOES_SLIPON && !force_lacing)
return
var/mob/living/carbon/human/our_guy
@@ -164,21 +165,21 @@
return
if(!in_range(user, our_guy))
to_chat(user, span_warning("You aren't close enough to interact with [src]'s laces!"))
to_chat(user, span_warning("You aren't close enough to interact with [src]'s [fastening_type]!"))
return
if(user == loc && tied != SHOES_TIED) // if they're our own shoes, go tie-wards
if(DOING_INTERACTION_WITH_TARGET(user, our_guy))
to_chat(user, span_warning("You're already interacting with [src]!"))
return
user.visible_message(span_notice("[user] begins [tied ? "unknotting" : "tying"] the laces of [user.p_their()] [src.name]."), span_notice("You begin [tied ? "unknotting" : "tying"] the laces of your [src.name]..."))
// SKYRAT EDIT START
user.visible_message(span_notice("[user] begins [tied ? "unknotting" : "[fastening_verb()]"] the [fastening_type] of [user.p_their()] [src.name]."), span_notice("You begin [tied ? "unknotting" : "[fastening_verb()]"] the [fastening_type] of your [src.name]..."))
// BUBBER EDIT START
var/tie_time = lace_time
if(HAS_TRAIT(user, TRAIT_STICKY_FINGERS))
tie_time *= 0.5
if(do_after(user, tie_time, target = our_guy, extra_checks = CALLBACK(src, PROC_REF(still_shoed), our_guy)))
// SKYRAT EDIT END
to_chat(user, span_notice("You [tied ? "unknot" : "tie"] the laces of your [src.name]."))
// BUBBER EDIT END
to_chat(user, span_notice("You [tied ? "unknot" : "[fasten_verb()]"] the [fastening_type] of your [src.name]."))
if(tied == SHOES_UNTIED)
adjust_laces(SHOES_TIED, user)
else
@@ -189,14 +190,14 @@
to_chat(user, span_warning("You must be on the floor to interact with [src]!"))
return
if(tied == SHOES_KNOTTED)
to_chat(user, span_warning("The laces on [loc]'s [src.name] are already a hopelessly tangled mess!"))
to_chat(user, span_warning("The [fastening_type] on [loc]'s [src.name] are already a hopelessly tangled mess!"))
return
if(DOING_INTERACTION_WITH_TARGET(user, our_guy))
to_chat(user, span_warning("You're already interacting with [src]!"))
return
var/mod_time = lace_time
to_chat(user, span_notice("You quietly set to work [tied ? "untying" : "knotting"] [loc]'s [src.name]..."))
to_chat(user, span_notice("You quietly set to work [tied ? "un[fastening_verb()]" : "knotting"] [loc]'s [src.name]..."))
if(HAS_TRAIT(user, TRAIT_CLUMSY)) // based clowns trained their whole lives for this
mod_time *= 0.75
// SKYRAT EDIT ADDITION START
@@ -204,14 +205,14 @@
mod_time *= 0.5
// SKYRAT EDIT ADDITION END
if(do_after(user, mod_time, target = our_guy, extra_checks = CALLBACK(src, PROC_REF(still_shoed), our_guy), hidden = TRUE))
to_chat(user, span_notice("You [tied ? "untie" : "knot"] the laces on [loc]'s [src.name]."))
to_chat(user, span_notice("You [tied ? "un[fasten_verb()]" : "knot"] the [fastening_type] on [loc]'s [src.name]."))
if(tied == SHOES_UNTIED)
adjust_laces(SHOES_KNOTTED, user)
else
adjust_laces(SHOES_UNTIED, user)
else // if one of us moved
user.visible_message(span_danger("[our_guy] stamps on [user]'s hand, mid-shoelace [tied ? "knotting" : "untying"]!"), span_userdanger("Ow! [our_guy] stamps on your hand!"), list(our_guy))
to_chat(our_guy, span_userdanger("You stamp on [user]'s hand! What the- [user.p_they()] [user.p_were()] [tied ? "knotting" : "untying"] your shoelaces!"))
user.visible_message(span_danger("[our_guy] stamps on [user]'s hand, mid-[tied ? "knotting" : "un[fastening_verb()]"]!"), span_userdanger("Ow! [our_guy] stamps on your hand!"), list(our_guy))
to_chat(our_guy, span_userdanger("You stamp on [user]'s hand! What the- [user.p_they()] [user.p_were()] [tied ? "knotting" : "un[fastening_verb()]"] your [fastening_type]!"))
user.emote("scream")
user.apply_damage(10, BRUTE, user.get_active_hand(), wound_bonus = CANT_WOUND)
user.apply_damage(40, STAMINA)
@@ -231,7 +232,7 @@
if(tied == SHOES_KNOTTED)
our_guy.Paralyze(5)
our_guy.Knockdown(10)
our_guy.visible_message(span_danger("[our_guy] trips on [our_guy.p_their()] knotted shoelaces and falls! What a klutz!"), span_userdanger("You trip on your knotted shoelaces and fall over!"))
our_guy.visible_message(span_danger("[our_guy] trips on [our_guy.p_their()] knotted [fastening_type] and falls! What a klutz!"), span_userdanger("You trip on your knotted [fastening_type] and fall over!"))
our_guy.add_mood_event("trip", /datum/mood_event/tripped) // well we realized they're knotted now!
our_alert_ref = WEAKREF(our_guy.throw_alert(ALERT_SHOES_KNOT, /atom/movable/screen/alert/shoes/knotted))
@@ -242,21 +243,21 @@
our_guy.Paralyze(5)
our_guy.Knockdown(10)
our_guy.add_mood_event("trip", /datum/mood_event/tripped) // well we realized they're knotted now!
our_guy.visible_message(span_danger("[our_guy] trips on [our_guy.p_their()] untied shoelaces and falls! What a klutz!"), span_userdanger("You trip on your untied shoelaces and fall over!"))
our_guy.visible_message(span_danger("[our_guy] trips on [our_guy.p_their()] [untied_adjective()] [fastening_type] and falls! What a klutz!"), span_userdanger("You trip on your [untied_adjective()] [fastening_type] and fall over!"))
if(2 to 5) // .4% chance to stumble and lurch forward
our_guy.throw_at(get_step(our_guy, our_guy.dir), 3, 2)
to_chat(our_guy, span_danger("You stumble on your untied shoelaces and lurch forward!"))
to_chat(our_guy, span_danger("You stumble on your [untied_adjective()] [fastening_type] and lurch forward!"))
if(6 to 13) // .7% chance to stumble and fling what we're holding
var/have_anything = FALSE
for(var/obj/item/I in our_guy.held_items)
have_anything = TRUE
our_guy.accident(I)
to_chat(our_guy, span_danger("You trip on your shoelaces a bit[have_anything ? ", flinging what you were holding" : ""]!"))
to_chat(our_guy, span_danger("You trip on your [fastening_type] a bit[have_anything ? ", flinging what you were holding" : ""]!"))
if(14 to 25) // 1.3ish% chance to stumble and be a bit off balance (like being disarmed)
to_chat(our_guy, span_danger("You stumble a bit on your untied shoelaces!"))
to_chat(our_guy, span_danger("You stumble a bit on your [untied_adjective()] [fastening_type]!"))
our_guy.adjust_staggered_up_to(STAGGERED_SLOWDOWN_LENGTH, 10 SECONDS)
if(26 to 1000)
@@ -277,20 +278,20 @@
/obj/item/clothing/shoes/attack_self(mob/user)
. = ..()
if (!can_be_tied)
if (fastening_type == SHOES_SLIPON)
return
if(DOING_INTERACTION_WITH_TARGET(user, src))
to_chat(user, span_warning("You're already interacting with [src]!"))
return
to_chat(user, span_notice("You begin [tied ? "untying" : "tying"] the laces on [src]..."))
// SKYRAT EDIT STARTr
to_chat(user, span_notice("You begin [tied ? "un" : ""][fastening_verb()] the [fastening_type] on [src]..."))
// BUBBER EDIT START
var/tie_time = lace_time
if(HAS_TRAIT(user, TRAIT_STICKY_FINGERS))
tie_time *= 0.5
if(do_after(user, lace_time, target = src,extra_checks = CALLBACK(src, PROC_REF(still_shoed), user)))
// SKYRAT EDIT END
if(do_after(user, tie_time, target = src,extra_checks = CALLBACK(src, PROC_REF(still_shoed), user)))
// BUBBER EDIT END
to_chat(user, span_notice("You [tied ? "untie" : "tie"] the laces on [src]."))
adjust_laces(tied ? SHOES_UNTIED : SHOES_TIED, user)
@@ -307,3 +308,33 @@
var/mob/wearer = loc
wearer.update_equipment_speed_mods()
return ..()
/// Returns appropriate description for unfastened shoes
/obj/item/clothing/shoes/verb/untied_adjective()
switch(fastening_type)
if (SHOES_LACED)
return "untied"
if (SHOES_VELCRO, SHOES_STRAPS)
return "loose"
return "nonexistant"
/// Returns appropriate verb for how to fasten shoes
/obj/item/clothing/shoes/verb/fasten_verb()
switch(fastening_type)
if (SHOES_LACED)
return "tie"
if (SHOES_VELCRO, SHOES_STRAPS)
return "fasten"
return "do something mysterious to"
/// Returns appropriate verb for fastening shoes
/obj/item/clothing/shoes/verb/fastening_verb()
switch(fastening_type)
if (SHOES_LACED)
return "tying"
if (SHOES_VELCRO, SHOES_STRAPS)
return "fastening"
return "doing something mysterious to"

View File

@@ -51,7 +51,7 @@
equip_delay_other = 50
resistance_flags = NONE
armor_type = /datum/armor/shoes_jackboots
can_be_tied = FALSE
fastening_type = SHOES_SLIPON
body_parts_covered = FEET|LEGS
/datum/armor/shoes_jackboots

View File

@@ -6,7 +6,7 @@
strip_delay = 100
equip_delay_other = 100
armor_type = /datum/armor/shoes_roman
can_be_tied = FALSE
fastening_type = SHOES_STRAPS
/obj/item/clothing/shoes/griffin
name = "griffon boots"
@@ -40,7 +40,7 @@
desc = "A giant, clunky pair of shoes crudely made out of bronze. Why would anyone wear these?"
icon = 'icons/obj/clothing/shoes.dmi'
icon_state = "clockwork_treads"
can_be_tied = FALSE
fastening_type = SHOES_SLIPON
/obj/item/clothing/shoes/bronze/Initialize(mapload)
. = ..()
@@ -52,7 +52,7 @@
name = "grilling sandals"
icon_state = "cookflops"
inhand_icon_state = "cookflops"
can_be_tied = FALSE
fastening_type = SHOES_SLIPON
species_exception = list(/datum/species/golem)
/obj/item/clothing/shoes/jackbros
@@ -91,12 +91,6 @@
. = ..()
. += emissive_appearance('icons/obj/clothing/shoes.dmi', "glow_shoes_emissive", offset_spokesman = src, alpha = src.alpha)
/obj/item/clothing/shoes/jackbros
name = "frosty boots"
desc = "For when you're stepping on up to the plate."
icon_state = "JackFrostShoes"
inhand_icon_state = null
/obj/item/clothing/shoes/saints
name = "saints sneakers"
desc = "Officially branded Saints sneakers. Incredibly valuable!"

View File

@@ -4,7 +4,7 @@
icon_state = "cowboy_brown"
armor_type = /datum/armor/shoes_cowboy
custom_price = PAYCHECK_CREW
can_be_tied = FALSE
fastening_type = SHOES_SLIPON
interaction_flags_mouse_drop = NEED_HANDS | NEED_DEXTERITY
var/max_occupants = 4
@@ -106,3 +106,13 @@
armor_type = /datum/armor/shoes_combat
has_spurs = TRUE
body_parts_covered = FEET|LEGS
// Laced variants for loadout
/obj/item/clothing/shoes/cowboy/laced
fastening_type = SHOES_LACED
/obj/item/clothing/shoes/cowboy/white/laced
fastening_type = SHOES_LACED
/obj/item/clothing/shoes/cowboy/black/laced
fastening_type = SHOES_LACED

View File

@@ -11,7 +11,7 @@
armor_type = /datum/armor/shoes_galoshes
can_be_bloody = FALSE
custom_price = PAYCHECK_CREW * 3
can_be_tied = FALSE
fastening_type = SHOES_SLIPON
///How much these boots affect fishing difficulty
var/fishing_modifier = -3

View File

@@ -8,9 +8,11 @@
strip_delay = 5
equip_delay_other = 50
armor_type = /datum/armor/shoes_sandal
can_be_tied = FALSE
fastening_type = SHOES_SLIPON
species_exception = list(/datum/species/golem)
lace_time = 3 SECONDS
/obj/item/clothing/shoes/sandal/alt
desc = "A pair of shiny black wooden sandals."
name = "black sandals"
@@ -28,3 +30,13 @@
/obj/item/clothing/shoes/sandal/beach
name = "flip-flops"
desc = "A very fashionable pair of flip-flops."
/obj/item/clothing/shoes/sandal/velcro
name = "velcro sandals"
desc = "A pair of wooden sandals that have been 'upgraded' with velcro straps in order to comply with corporate uniform policy."
fastening_type = SHOES_VELCRO
/obj/item/clothing/shoes/sandal/alt/velcro
name = "black velcro sandals"
desc = "A pair of shiny black sandals that have been 'upgraded' with velcro straps in order to comply with corporate uniform policy."
fastening_type = SHOES_VELCRO

View File

@@ -182,7 +182,7 @@
greyscale_config_worn = /datum/greyscale_config/sneakers_marisa/worn
strip_delay = 5
equip_delay_other = 50
can_be_tied = FALSE
fastening_type = SHOES_SLIPON
resistance_flags = FIRE_PROOF | ACID_PROOF
/obj/item/clothing/shoes/sneakers/cyborg

View File

@@ -60,4 +60,4 @@
strip_delay = 30
equip_delay_other = 50
resistance_flags = NONE
can_be_tied = FALSE
fastening_type = SHOES_SLIPON

View File

@@ -59,3 +59,11 @@
/datum/loadout_item/glasses/eyepatch/medical
name = "Medical Eyepatch"
item_path = /obj/item/clothing/glasses/eyepatch/medical
/datum/loadout_item/glasses/prescription_glasses/kim
name = "Thin Glasses"
item_path = /obj/item/clothing/glasses/regular/kim
/datum/loadout_item/glasses/monocle
name = "Monocle"
item_path = /obj/item/clothing/glasses/monocle

View File

@@ -38,3 +38,7 @@
/datum/loadout_item/neck/necktie_loose
name = "Necktie (Loose)"
item_path = /obj/item/clothing/neck/tie/detective
/datum/loadout_item/neck/bowtie
name = "Bowtie"
item_path = /obj/item/clothing/neck/bowtie

View File

@@ -53,13 +53,11 @@
item_path = /obj/item/lipstick/blue
additional_displayed_text = list("Blue")
/datum/loadout_item/pocket_items/lipstick_green
name = "Lipstick (Green)"
item_path = /obj/item/lipstick/green
additional_displayed_text = list("Green")
/datum/loadout_item/pocket_items/lipstick_jade
name = "Lipstick (Jade)"
item_path = /obj/item/lipstick/jade
@@ -194,3 +192,31 @@
name = "D00"
item_path = /obj/item/dice/d00
*/
/datum/loadout_item/pocket_items/lighter
name = "Zippo Lighter"
item_path = /obj/item/lighter
/datum/loadout_item/pocket_items/flask
name = "Pocket Flask"
item_path = /obj/item/reagent_containers/cup/glass/flask
/datum/loadout_item/pocket_items/clipboard
name = "Clipboard"
item_path = /obj/item/clipboard
/datum/loadout_item/pocket_items/dye
name = "Hair Dye"
item_path = /obj/item/dyespray
/datum/loadout_item/pocket_items/poster
name = "Poster (Contraband)"
item_path = /obj/item/poster/random_contraband
/datum/loadout_item/pocket_items/poster_pinup
name = "Poster (Pinup)"
item_path = /obj/item/poster/random_contraband/pinup
/datum/loadout_item/pocket_items/wallet
name = "Wallet"
item_path = /obj/item/storage/wallet

View File

@@ -0,0 +1,44 @@
/// Shoe Slot Items (Deletes overrided items)
/datum/loadout_category/shoes
category_name = "Shoes"
category_ui_icon = FA_ICON_SHOE_PRINTS
type_to_generate = /datum/loadout_item/shoes
tab_order = 1
/datum/loadout_item/shoes
abstract_type = /datum/loadout_item/shoes
/datum/loadout_item/shoes/insert_path_into_outfit(datum/outfit/outfit, mob/living/carbon/human/equipper, visuals_only = FALSE)
outfit.shoes = item_path
/datum/loadout_item/shoes/sneakers
name = "Sneakers (Colourable)"
item_path = /obj/item/clothing/shoes/sneakers
/datum/loadout_item/shoes/sandals_laced
name = "Sandals (Velcro)"
item_path = /obj/item/clothing/shoes/sandal/velcro
/datum/loadout_item/shoes/sandals_laced_black
name = "Sandals (Black, Velcro)"
item_path = /obj/item/clothing/shoes/sandal/alt/velcro
/datum/loadout_item/shoes/laceup
name = "Shoes (Laceup)"
item_path = /obj/item/clothing/shoes/laceup
/datum/loadout_item/shoes/cowboy_brown
name = "Boots (Cowboy, Brown)"
item_path = /obj/item/clothing/shoes/cowboy/laced
/datum/loadout_item/shoes/cowboy_white
name = "Boots (Cowboy, White)"
item_path = /obj/item/clothing/shoes/cowboy/white/laced
/datum/loadout_item/shoes/cowboy_black
name = "Boots (Cowboy, Black)"
item_path = /obj/item/clothing/shoes/cowboy/black/laced
/datum/loadout_item/shoes/glow_shoes
name = "Shoes (Glowing, Colourable)"
item_path = /obj/item/clothing/shoes/glow

View File

@@ -138,7 +138,7 @@ GLOBAL_LIST_INIT(strippable_human_items, create_strippable_list(list(
/datum/strippable_item/mob_item_slot/feet/get_alternate_actions(atom/source, mob/user)
var/obj/item/clothing/shoes/shoes = get_item(source)
if (!istype(shoes) || !shoes.can_be_tied)
if (!istype(shoes) || shoes.fastening_type == SHOES_SLIPON)
return null
switch (shoes.tied)

View File

@@ -64,5 +64,5 @@
heat_protection = FEET|LEGS
cold_protection = FEET|LEGS
item_flags = IGNORE_DIGITIGRADE | IMMUTABLE_SLOW
can_be_tied = FALSE
fastening_type = SHOES_SLIPON
equip_sound = null

View File

@@ -90,11 +90,11 @@
switch(shoes_to_tie.tied)
if(SHOES_TIED)
if(!shoes_to_tie.can_be_tied)
if(shoes_to_tie.fastening_type == SHOES_SLIPON)
if(bypass_tie_status)
to_chat(owner, span_warning("You magically grant laces to [cast_on]'s shoes!"))
cast_on.balloon_alert(owner, "laced!")
shoes_to_tie.can_be_tied = TRUE
shoes_to_tie.fastening_type = SHOES_LACED
if(invocation_type != INVOCATION_NONE)
playsound(cast_on, 'sound/effects/magic/summonitems_generic.ogg', 50, TRUE)
return TRUE

View File

@@ -1942,7 +1942,6 @@
#include "code\datums\quirks\negative_quirks\unusual.dm"
#include "code\datums\quirks\neutral_quirks\bald.dm"
#include "code\datums\quirks\neutral_quirks\borg_ready.dm"
#include "code\datums\quirks\neutral_quirks\colorist.dm"
#include "code\datums\quirks\neutral_quirks\deviant_tastes.dm"
#include "code\datums\quirks\neutral_quirks\evil.dm"
#include "code\datums\quirks\neutral_quirks\extrovert.dm"
@@ -4712,6 +4711,7 @@
#include "code\modules\loadout\categories\inhands.dm"
#include "code\modules\loadout\categories\neck.dm"
#include "code\modules\loadout\categories\pocket.dm"
#include "code\modules\loadout\categories\shoes.dm"
#include "code\modules\logging\log_category.dm"
#include "code\modules\logging\log_entry.dm"
#include "code\modules\logging\log_holder.dm"