From 37e9e6f359794f44318fb26b98a5ab024d7c4eea Mon Sep 17 00:00:00 2001 From: Henri215 <77684085+Henri215@users.noreply.github.com> Date: Sat, 22 Apr 2023 04:28:11 -0300 Subject: [PATCH] Pimpin' ride floor buffer now can be toggled on/off v2 (#20762) * Pimpin' ride floor buffer now can be toggled * Early return --- code/modules/vehicle/janicart.dm | 52 +++++++++++++++++++++++++------- 1 file changed, 41 insertions(+), 11 deletions(-) diff --git a/code/modules/vehicle/janicart.dm b/code/modules/vehicle/janicart.dm index bbde218a779..c49d15d346a 100644 --- a/code/modules/vehicle/janicart.dm +++ b/code/modules/vehicle/janicart.dm @@ -5,6 +5,10 @@ icon_state = "pussywagon" key_type = /obj/item/key/janitor var/obj/item/storage/bag/trash/mybag + var/buffer_installed = FALSE + /// How much speed the janicart loses while the buffer is active + var/buffer_delay = 1 + /// Does it clean the tile under it? var/floorbuffer = FALSE /obj/vehicle/janicart/Destroy() @@ -30,12 +34,10 @@ buckled_mob.pixel_x = 12 buckled_mob.pixel_y = 7 - /obj/item/key/janitor desc = "A keyring with a small steel key, and a pink fob reading \"Pussy Wagon\"." icon_state = "keyjanitor" - /obj/item/janiupgrade name = "floor buffer upgrade" desc = "An upgrade for mobile janicarts." @@ -43,9 +45,41 @@ icon_state = "upgrade" origin_tech = "materials=3;engineering=4" +/datum/action/floor_buffer + name = "Toggle Floor Buffer" + desc = "Movement speed is decreased while active." + icon_icon = 'icons/obj/vehicles.dmi' + button_icon_state = "upgrade" + +/datum/action/floor_buffer/Trigger() + . = ..() + var/obj/vehicle/janicart/J = target + if(!J.floorbuffer) + J.floorbuffer = TRUE + J.vehicle_move_delay += J.buffer_delay + else + J.floorbuffer = FALSE + J.vehicle_move_delay -= J.buffer_delay + to_chat(usr, "The floor buffer is now [J.floorbuffer ? "active" : "deactivated"].") + +/obj/vehicle/janicart/post_buckle_mob(mob/living/M) + . = ..() + if(!buffer_installed) + return + var/datum/action/floor_buffer/floorbuffer_action = new(src) + if(has_buckled_mobs()) + floorbuffer_action.Grant(M) + else + floorbuffer_action.Remove(M) + +/obj/vehicle/janicart/post_unbuckle_mob(mob/living/M) + for(var/datum/action/floor_buffer/floorbuffer_action in M.actions) + floorbuffer_action.Remove(M) + return ..() + /obj/vehicle/janicart/Move(atom/OldLoc, Dir) . = ..() - if(floorbuffer) + if(floorbuffer && has_buckled_mobs()) var/turf/tile = loc if(isturf(tile)) tile.clean_blood() @@ -53,14 +87,11 @@ if(E.is_cleanable()) qdel(E) - - /obj/vehicle/janicart/examine(mob/user) . = ..() - if(floorbuffer) + if(buffer_installed) . += "It has been upgraded with a floor buffer." - /obj/vehicle/janicart/attackby(obj/item/I, mob/user, params) var/fail_msg = "There is already one of those in [src]." @@ -76,10 +107,10 @@ update_icon(UPDATE_OVERLAYS) return if(istype(I, /obj/item/janiupgrade)) - if(floorbuffer) + if(buffer_installed) to_chat(user, fail_msg) return - floorbuffer = TRUE + buffer_installed = TRUE qdel(I) to_chat(user,"You upgrade [src] with [I].") update_icon(UPDATE_OVERLAYS) @@ -93,10 +124,9 @@ . = ..() if(mybag) . += "cart_garbage" - if(floorbuffer) + if(buffer_installed) . += "cart_buffer" - /obj/vehicle/janicart/attack_hand(mob/user) if(..()) return TRUE