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