diff --git a/code/modules/clothing/shoes/miscellaneous.dm b/code/modules/clothing/shoes/miscellaneous.dm index 06c2c19ad8..cdf5512fc6 100644 --- a/code/modules/clothing/shoes/miscellaneous.dm +++ b/code/modules/clothing/shoes/miscellaneous.dm @@ -213,6 +213,7 @@ heat_protection = FEET|LEGS max_heat_protection_temperature = SHOES_MAX_TEMP_PROTECT resistance_flags = FIRE_PROOF + lace_time = 10 SECONDS /obj/item/clothing/shoes/cult name = "\improper Nar'Sien invoker boots" diff --git a/code/modules/events/untie_shoes.dm b/code/modules/events/untie_shoes.dm index 92e53b4eab..708a72f40b 100644 --- a/code/modules/events/untie_shoes.dm +++ b/code/modules/events/untie_shoes.dm @@ -9,7 +9,7 @@ fakeable = FALSE /datum/round_event/untied_shoes/start() - var/iterations = 1 + var/budget = rand(5 SECONDS,20 SECONDS) for(var/mob/living/carbon/C in shuffle(GLOB.alive_mob_list)) if(!C.client) continue @@ -17,12 +17,15 @@ continue if (HAS_TRAIT(C,TRAIT_EXEMPT_HEALTH_EVENTS)) continue - if(!C.shoes || !C.shoes.can_be_tied || C.shoes.tied != SHOES_TIED) + if(!C.shoes || !C.shoes.can_be_tied || C.shoes.tied != SHOES_TIED || C.shoes.lace_time > budget) + continue + if(!is_station_level(C.z) && prob(50)) continue if(prob(5)) C.shoes.adjust_laces(SHOES_KNOTTED) + budget -= C.shoes.lace_time // doubling up on the budget removal on purpose else C.shoes.adjust_laces(SHOES_UNTIED) - iterations++ - if(prob(100/iterations)) + budget -= C.shoes.lace_time + if(budget < 5 SECONDS) return