diff --git a/code/datums/action.dm b/code/datums/action.dm
index eab8681a77e1..e230f4908938 100644
--- a/code/datums/action.dm
+++ b/code/datums/action.dm
@@ -647,6 +647,17 @@
var/datum/language_holder/H = M.get_language_holder()
H.open_language_menu(usr)
+/datum/action/item_action/wheelys
+ name = "Toggle Wheely-Heel's Wheels"
+ desc = "Pops out or in your wheely-heel's wheels."
+ icon_icon = 'icons/mob/actions/actions_items.dmi'
+ button_icon_state = "wheelys"
+
+/datum/action/item_action/kindleKicks
+ name = "Activate Kindle Kicks"
+ desc = "Kick you feet together, activating the lights in your Kindle Kicks."
+ icon_icon = 'icons/mob/actions/actions_items.dmi'
+ button_icon_state = "kindleKicks"
//Small sprites
/datum/action/small_sprite
@@ -677,4 +688,4 @@
small = TRUE
else
owner.remove_alt_appearance("smallsprite")
- small = FALSE
\ No newline at end of file
+ small = FALSE
diff --git a/code/game/machinery/computer/arcade.dm b/code/game/machinery/computer/arcade.dm
index fbb5faedc2b1..07f5c0f9230f 100644
--- a/code/game/machinery/computer/arcade.dm
+++ b/code/game/machinery/computer/arcade.dm
@@ -49,7 +49,9 @@
/obj/item/toy/toy_dagger = 2,
/obj/item/extendohand/acme = 1,
/obj/item/hot_potato/harmless/toy = 1,
- /obj/item/card/emagfake = 1)
+ /obj/item/card/emagfake = 1,
+ /obj/item/clothing/shoes/wheelys = 2,
+ /obj/item/clothing/shoes/kindleKicks = 2)
light_color = LIGHT_COLOR_GREEN
diff --git a/code/modules/clothing/shoes/miscellaneous.dm b/code/modules/clothing/shoes/miscellaneous.dm
index e5bc99fabfe6..b954dcef757c 100644
--- a/code/modules/clothing/shoes/miscellaneous.dm
+++ b/code/modules/clothing/shoes/miscellaneous.dm
@@ -253,3 +253,68 @@
/obj/item/clothing/shoes/bronze/Initialize()
. = ..()
AddComponent(/datum/component/squeak, list('sound/machines/clockcult/integration_cog_install.ogg' = 1, 'sound/magic/clockwork/fellowship_armory.ogg' = 1), 50)
+
+/obj/item/clothing/shoes/wheelys
+ name = "Wheely-Heels"
+ desc = "Uses patented retractable wheel technology. Never sacrifice speed for style - not that this provides much of either." //Thanks Fel
+ icon_state = "wheelys"
+ item_state = "wheelys"
+ actions_types = list(/datum/action/item_action/wheelys)
+ var/wheelToggle = FALSE //False means wheels are not popped out
+ var/obj/vehicle/ridden/scooter/wheelys/W
+
+/obj/item/clothing/shoes/wheelys/Initialize()
+ . = ..()
+ W = new /obj/vehicle/ridden/scooter/wheelys(null)
+
+/obj/item/clothing/shoes/wheelys/ui_action_click(mob/user, action)
+ if(!isliving(user))
+ return
+ if(!istype(user.get_item_by_slot(slot_shoes), /obj/item/clothing/shoes/wheelys))
+ to_chat(user, "You must be wearing the wheely-heels to use them!")
+ return
+ if(!(W.is_occupant(user)))
+ wheelToggle = FALSE
+ if(wheelToggle)
+ W.unbuckle_mob(user)
+ wheelToggle = FALSE
+ return
+ W.forceMove(get_turf(user))
+ W.buckle_mob(user)
+ wheelToggle = TRUE
+
+/obj/item/clothing/shoes/wheelys/dropped(mob/user)
+ if(wheelToggle)
+ W.unbuckle_mob(user)
+ wheelToggle = FALSE
+ ..()
+
+/obj/item/clothing/shoes/wheelys/Destroy()
+ QDEL_NULL(W)
+ . = ..()
+
+/obj/item/clothing/shoes/kindleKicks
+ name = "Kindle Kicks"
+ desc = "They'll sure kindle something in you, and it's not childhood nostalgia..."
+ icon_state = "kindleKicks"
+ item_state = "kindleKicks"
+ actions_types = list(/datum/action/item_action/kindleKicks)
+ var/lightCycle = 0
+ var/active = FALSE
+
+/obj/item/clothing/shoes/kindleKicks/ui_action_click(mob/user, action)
+ if(active)
+ return
+ active = TRUE
+ set_light(2, 3, rgb(rand(0,255),rand(0,255),rand(0,255)))
+ addtimer(CALLBACK(src, .proc/lightUp), 5)
+
+/obj/item/clothing/shoes/kindleKicks/proc/lightUp(mob/user)
+ if(lightCycle < 15)
+ set_light(2, 3, rgb(rand(0,255),rand(0,255),rand(0,255)))
+ lightCycle += 1
+ addtimer(CALLBACK(src, .proc/lightUp), 5)
+ else
+ set_light(0)
+ lightCycle = 0
+ active = FALSE
\ No newline at end of file
diff --git a/code/modules/vehicles/scooter.dm b/code/modules/vehicles/scooter.dm
index a3e10c1a31dd..4b2dba7bc374 100644
--- a/code/modules/vehicles/scooter.dm
+++ b/code/modules/vehicles/scooter.dm
@@ -146,3 +146,44 @@
qdel(src)
return TRUE
+//Wheelys
+/obj/vehicle/ridden/scooter/wheelys
+ name = "Wheely-Heels"
+ desc = "Uses patented retractable wheel technology. Never sacrifice speed for style - not that this provides much of either."
+ icon = null
+ density = FALSE
+
+/obj/vehicle/ridden/scooter/wheelys/Initialize()
+ . = ..()
+ var/datum/component/riding/D = LoadComponent(/datum/component/riding)
+ D.vehicle_move_delay = 0
+ D.set_vehicle_dir_layer(SOUTH, ABOVE_MOB_LAYER)
+ D.set_vehicle_dir_layer(NORTH, OBJ_LAYER)
+ D.set_vehicle_dir_layer(EAST, OBJ_LAYER)
+ D.set_vehicle_dir_layer(WEST, OBJ_LAYER)
+
+/obj/vehicle/ridden/scooter/wheelys/post_unbuckle_mob(mob/living/M)
+ if(!has_buckled_mobs())
+ to_chat(M, "You pop the Wheely-Heel's wheels back into place.")
+ moveToNullspace()
+ return ..()
+
+/obj/vehicle/ridden/scooter/wheelys/post_buckle_mob(mob/living/M)
+ to_chat(M, "You pop out the Wheely-Heel's wheels.")
+ return ..()
+
+/obj/vehicle/ridden/scooter/wheelys/Collide(atom/A)
+ . = ..()
+ if(A.density && has_buckled_mobs())
+ var/mob/living/H = buckled_mobs[1]
+ var/atom/throw_target = get_edge_target_turf(H, pick(GLOB.cardinals))
+ unbuckle_mob(H)
+ H.throw_at(throw_target, 4, 3)
+ H.Knockdown(30)
+ H.adjustStaminaLoss(10)
+ var/head_slot = H.get_item_by_slot(slot_head)
+ if(!head_slot || !(istype(head_slot,/obj/item/clothing/head/helmet) || istype(head_slot,/obj/item/clothing/head/hardhat)))
+ H.adjustBrainLoss(1)
+ H.updatehealth()
+ visible_message("[src] crashes into [A], sending [H] flying!")
+ playsound(src, 'sound/effects/bang.ogg', 50, 1)
\ No newline at end of file
diff --git a/icons/mob/actions/actions_items.dmi b/icons/mob/actions/actions_items.dmi
index 266c197ad339..b16c7e42637e 100644
Binary files a/icons/mob/actions/actions_items.dmi and b/icons/mob/actions/actions_items.dmi differ
diff --git a/icons/mob/feet.dmi b/icons/mob/feet.dmi
index 2eab8fa78eab..e7598f35c907 100644
Binary files a/icons/mob/feet.dmi and b/icons/mob/feet.dmi differ
diff --git a/icons/obj/clothing/shoes.dmi b/icons/obj/clothing/shoes.dmi
index 77b62691d241..db0634181b70 100644
Binary files a/icons/obj/clothing/shoes.dmi and b/icons/obj/clothing/shoes.dmi differ