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