diff --git a/code/modules/clothing/shoes/misc_shoes.dm b/code/modules/clothing/shoes/misc_shoes.dm index 4d1a1e16370..3000a56a052 100644 --- a/code/modules/clothing/shoes/misc_shoes.dm +++ b/code/modules/clothing/shoes/misc_shoes.dm @@ -70,7 +70,7 @@ /obj/item/clothing/shoes/clown_shoes name = "clown shoes" - desc = "The prankster's standard-issue clowning shoes. Damn they're huge! Ctrl-click to toggle the waddle dampeners!" + desc = "The prankster's standard-issue clowning shoes. Damn they're huge! Ctrl-click to toggle the waddle dampeners!" icon_state = "clown" item_state = "clown_shoes" slowdown = SHOES_SLOWDOWN+1 @@ -116,6 +116,8 @@ /obj/item/clothing/shoes/clown_shoes/slippers actions_types = list(/datum/action/item_action/slipping) + enabled_waddle = FALSE + slowdown = 0 var/slide_distance = 6 var/recharging_rate = 8 SECONDS var/recharging_time = 0 @@ -124,30 +126,32 @@ if(slot == slot_shoes) return TRUE -/obj/item/clothing/shoes/clown_shoes/slippers/ui_action_click(mob/living/user, action) - if(recharging_time > world.time) - to_chat(user, "The boot's internal propulsion needs to recharge still!") - return - var/prev_dir = user.dir - var/prev_pass_flags = user.pass_flags - user.pass_flags |= PASSMOB - user.Weaken(4 SECONDS) +/obj/item/clothing/shoes/clown_shoes/slippers/proc/slide_one(mob/living/user, progress, prev_dir , prev_flags) user.dir = prev_dir - playsound(src, 'sound/effects/stealthoff.ogg', 50, TRUE, 1) - recharging_time = world.time + recharging_rate - user.visible_message("[user] slips forward!") - for(var/i in 1 to slide_distance) - step(user, user.dir) - sleep(1) - user.SetWeakened(0) - user.pass_flags = prev_pass_flags + step(user, user.dir) + if(progress == slide_distance) + user.stand_up() + user.pass_flags = prev_flags + +/obj/item/clothing/shoes/clown_shoes/slippers/ui_action_click(mob/living/user, action) + if(recharging_time > world.time) + to_chat(user, "The boot's internal propulsion needs to recharge still!") + return + var/prev_dir = user.dir + var/old_pass = user.pass_flags + user.pass_flags |= (PASSMOB | PASSTABLE) + playsound(src, 'sound/items/bikehorn.ogg', 50, TRUE, 1) + recharging_time = world.time + recharging_rate + user.lay_down() + for(var/crossed in 1 to slide_distance) + addtimer(CALLBACK(src, PROC_REF(slide_one), user, crossed, prev_dir, old_pass), crossed) /obj/item/clothing/shoes/clown_shoes/slippers/toggle_waddle(mob/living/user) if(!enabled_waddle) to_chat(user, "You switch off the waddle dampeners!") enabled_waddle = TRUE - slowdown = initial(slowdown) + slowdown = SHOES_SLOWDOWN + 1 else to_chat(user, "You switch on the waddle dampeners, [src] no longer slow you down!") enabled_waddle = FALSE