diff --git a/code/modules/mining/mine_items.dm b/code/modules/mining/mine_items.dm
index b11ba11dc6b..951b821a0f1 100644
--- a/code/modules/mining/mine_items.dm
+++ b/code/modules/mining/mine_items.dm
@@ -586,14 +586,13 @@
key = null
var/image/I = new(icon = 'icons/obj/cart.dmi', icon_state = "[icon_state]_overlay", layer = src.layer + 0.2) //over mobs
add_overlay(I)
- turn_off() //so engine verbs are correctly set
+ turn_off()
/obj/vehicle/train/cargo/engine/mining/attackby(obj/item/W, mob/user)
if(istype(W, /obj/item/key/minecarts))
if(!key)
user.drop_from_inventory(W, src)
key = W
- verbs += /obj/vehicle/train/cargo/engine/verb/remove_key
return
..()
diff --git a/code/modules/vehicles/bike.dm b/code/modules/vehicles/bike.dm
index e6dfe96cdd1..8d59df8b494 100644
--- a/code/modules/vehicles/bike.dm
+++ b/code/modules/vehicles/bike.dm
@@ -1,7 +1,7 @@
/obj/vehicle/bike
name = "space-bike"
desc = "Space wheelies! Woo!"
- desc_info = "Drag yourself onto the bike to mount it, toggle the engine to be able to drive around. Deploy the kickstand to prevent movement by driving and dragging. Drag it onto yourself to access its mounted storage. Resist to get off. Use ctrl-click to quickly toggle the engine if you're adjacent (only when vehicle is stationary). Alt-click will similarly toggle the kickstand."
+ desc_info = "Click on the bike, click resist, or type resist into the red bar below to get off. Drag yourself onto the bike to mount it, toggle the engine to be able to drive around. Deploy the kickstand to prevent movement by driving and dragging. Drag it onto yourself to access its mounted storage. Resist to get off. Use ctrl-click to quickly toggle the engine if you're adjacent (only when vehicle is stationary). Alt-click will similarly toggle the kickstand."
icon = 'icons/obj/bike.dmi'
icon_state = "bike_off"
dir = SOUTH
@@ -25,8 +25,8 @@
var/kickstand = TRUE
var/can_hover = TRUE
-/obj/vehicle/bike/Initialize()
- . = ..()
+/obj/vehicle/bike/setup_vehicle()
+ ..()
ion = new(src)
turn_off()
add_overlay(image('icons/obj/bike.dmi', "[icon_state]_off_overlay", MOB_LAYER + 1))
@@ -36,16 +36,13 @@
/obj/vehicle/bike/CtrlClick(var/mob/user)
if(Adjacent(user) && anchored)
- toggle()
+ toggle_engine(user)
else
return ..()
-/obj/vehicle/bike/verb/toggle()
- set name = "Toggle Engine"
- set category = "Vehicle"
- set src in view(0)
-
- if(usr.incapacitated()) return
+/obj/vehicle/bike/proc/toggle_engine(var/mob/user)
+ if(use_check_and_message(user))
+ return
if(!on)
turn_on()
@@ -61,23 +58,20 @@
else
return ..()
-/obj/vehicle/bike/verb/kickstand()
- set name = "Toggle Kickstand"
- set category = "Vehicle"
- set src in view(0)
-
- if(usr.incapacitated()) return
+/obj/vehicle/bike/proc/kickstand(var/mob/user)
+ if(use_check_and_message(user))
+ return
if(kickstand)
- usr.visible_message("\The [usr] puts up \the [src]'s kickstand.", "You put up \the [src]'s kickstand.", "You hear a thunk.")
+ user.visible_message("\The [user] puts up \the [src]'s kickstand.", "You put up \the [src]'s kickstand.", "You hear a thunk.")
playsound(src, 'sound/misc/bike_stand_up.ogg', 50, 1)
else
if(isturf(loc))
var/turf/T = loc
if (T.is_hole)
- to_chat(usr, "You don't think kickstands work here.")
+ to_chat(user, "You don't think kickstands work here.")
return
- usr.visible_message("\The [usr] puts down \the [src]'s kickstand.", "You put down \the [src]'s kickstand.", "You hear a thunk.")
+ user.visible_message("\The [user] puts down \the [src]'s kickstand.", "You put down \the [src]'s kickstand.", "You hear a thunk.")
playsound(src, 'sound/misc/bike_stand_down.ogg', 50, 1)
if(pulledby)
pulledby.stop_pulling()
diff --git a/code/modules/vehicles/cargo_train.dm b/code/modules/vehicles/cargo_train.dm
index 83281d62c94..9d8d0a795b1 100644
--- a/code/modules/vehicles/cargo_train.dm
+++ b/code/modules/vehicles/cargo_train.dm
@@ -1,7 +1,7 @@
/obj/vehicle/train/cargo/engine
name = "cargo train tug"
desc = "A ridable electric car designed for pulling cargo trolleys."
- desc_info = "Use ctrl-click to quickly toggle the engine if you're adjacent (only when vehicle is stationary). Alt-click will grab the keys, if present."
+ desc_info = "Click resist, or type resist into the red bar below to get off. Use ctrl-click to quickly toggle the engine if you're adjacent (only when vehicle is stationary). Alt-click will grab the keys, if present. If latched, you can use a wrench to unlatch."
icon = 'icons/obj/vehicles.dmi'
icon_state = "cargo_engine"
on = 0
@@ -27,6 +27,7 @@
/obj/vehicle/train/cargo/trolley
name = "cargo train trolley"
+ desc_info = "You can use a wrench to unlatch this."
icon = 'icons/obj/vehicles.dmi'
icon_state = "cargo_trailer"
anchored = 0
@@ -41,13 +42,16 @@
//-------------------------------------------
// Standard procs
//-------------------------------------------
-/obj/vehicle/train/cargo/engine/Initialize()
- . = ..()
+/obj/vehicle/train/cargo/engine/setup_vehicle()
+ ..()
+ setup_engine()
+
+/obj/vehicle/train/cargo/engine/proc/setup_engine()
cell = new /obj/item/cell/high(src)
key = new(src)
var/image/I = new(icon = icon, icon_state = "[icon_state]_overlay", layer = src.layer + 0.2) //over mobs
add_overlay(I)
- turn_off() //so engine verbs are correctly set
+ turn_off()
/obj/vehicle/train/cargo/engine/attack_hand(mob/user)
if(use_check_and_message(user))
@@ -93,11 +97,11 @@
if(href_list["toggle_engine"])
if(!on)
- start_engine()
+ start_engine(usr)
else
- stop_engine()
+ stop_engine(usr)
if(href_list["key"])
- do_remove_key(usr)
+ remove_key(usr)
if(href_list["unlatch"])
tow.unattach(usr)
SSvueui.check_uis_for_change(src)
@@ -131,7 +135,6 @@
user.drop_from_inventory(W, src)
key = W
to_chat(user, SPAN_NOTICE("You slide the key into the ignition."))
- verbs += /obj/vehicle/train/cargo/engine/verb/remove_key
else
to_chat(user, SPAN_WARNING("\The [src] already has a key inserted."))
return
@@ -186,25 +189,6 @@
..()
update_stats()
- verbs -= /obj/vehicle/train/cargo/engine/verb/stop_engine
- verbs -= /obj/vehicle/train/cargo/engine/verb/start_engine
-
- if(on)
- verbs += /obj/vehicle/train/cargo/engine/verb/stop_engine
- else
- verbs += /obj/vehicle/train/cargo/engine/verb/start_engine
-
-/obj/vehicle/train/cargo/engine/turn_off()
- ..()
-
- verbs -= /obj/vehicle/train/cargo/engine/verb/stop_engine
- verbs -= /obj/vehicle/train/cargo/engine/verb/start_engine
-
- if(!on)
- verbs += /obj/vehicle/train/cargo/engine/verb/start_engine
- else
- verbs += /obj/vehicle/train/cargo/engine/verb/stop_engine
-
/obj/vehicle/train/cargo/RunOver(var/mob/living/carbon/human/H)
var/list/parts = list(BP_HEAD, BP_CHEST, BP_L_LEG, BP_R_LEG, BP_L_ARM, BP_R_ARM)
@@ -262,77 +246,51 @@
/obj/vehicle/train/cargo/engine/CtrlClick(var/mob/user)
if(Adjacent(user))
if(on)
- stop_engine()
+ stop_engine(usr)
else
- start_engine()
+ start_engine(usr)
else
return ..()
/obj/vehicle/train/cargo/engine/AltClick(var/mob/user)
if(Adjacent(user))
- remove_key()
+ remove_key(user)
else
return ..()
-/obj/vehicle/train/cargo/engine/verb/start_engine()
- set name = "Start engine"
- set category = "Vehicle"
- set src in view(0)
-
- if(!ishuman(usr))
- return
-
+/obj/vehicle/train/cargo/engine/proc/start_engine(var/mob/user)
if(on)
- to_chat(usr, "The engine is already running.")
+ to_chat(user, SPAN_WARNING("The engine is already running."))
return
turn_on()
if(on)
- to_chat(usr, "You start [src]'s engine.")
+ to_chat(user, SPAN_NOTICE("You start \the [src]'s engine."))
else if(cell.charge < charge_use)
- to_chat(usr, "[src] is out of power.")
-
-/obj/vehicle/train/cargo/engine/verb/stop_engine()
- set name = "Stop engine"
- set category = "Vehicle"
- set src in view(0)
-
- if(!istype(usr, /mob/living/carbon/human))
- return
+ to_chat(user, SPAN_WARNING("\The [src] is out of power."))
+/obj/vehicle/train/cargo/engine/proc/stop_engine(var/mob/user)
if(!on)
- to_chat(usr, "The engine is already stopped.")
+ to_chat(user, SPAN_WARNING("The engine is already stopped."))
return
turn_off()
- if (!on)
- to_chat(usr, "You stop [src]'s engine.")
-
-/obj/vehicle/train/cargo/engine/verb/remove_key()
- set name = "Remove key"
- set category = "Vehicle"
- set src in view(0)
-
- if(!istype(usr, /mob/living/carbon/human))
- return
+ if(!on)
+ to_chat(user, SPAN_NOTICE("You stop [src]'s engine."))
+/obj/vehicle/train/cargo/engine/proc/remove_key(var/mob/user)
if(!key)
to_chat(usr, SPAN_WARNING("\The [src] doesn't have a key inserted!"))
return
if(load && load != usr)
return
- do_remove_key(usr)
-
-/obj/vehicle/train/cargo/engine/proc/do_remove_key(var/mob/user)
if(on)
turn_off()
user.put_in_hands(key)
key = null
- verbs -= /obj/vehicle/train/cargo/engine/verb/remove_key
-
/obj/vehicle/train/cargo/engine/emag_act(var/remaining_charges, mob/user)
. = ..()
if(.)
diff --git a/code/modules/vehicles/pussywagon.dm b/code/modules/vehicles/pussywagon.dm
index daca0d8c3da..98369c5195b 100644
--- a/code/modules/vehicles/pussywagon.dm
+++ b/code/modules/vehicles/pussywagon.dm
@@ -18,13 +18,11 @@
icon_state = "keys"
w_class = ITEMSIZE_TINY
-/obj/vehicle/train/cargo/engine/pussywagon/Initialize()
- . = ..()
+/obj/vehicle/train/cargo/engine/pussywagon/setup_engine()
cell = new /obj/item/cell/high(src)
key = null
- verbs -= /obj/vehicle/train/cargo/engine/verb/remove_key
update_icon()
- turn_off() //so engine verbs are correctly set
+ turn_off()
/obj/vehicle/train/cargo/engine/pussywagon/vueui_data_change(list/data, mob/user, datum/vueui/ui)
data = ..()
@@ -52,12 +50,12 @@
return
if(href_list["toggle_hoover"])
- toggle_hoover()
+ toggle_hoover(usr)
if(href_list["empty_hoover"])
var/obj/vehicle/train/cargo/trolley/pussywagon/PT = tow
PT.empty_hoover(usr)
if(href_list["toggle_mops"])
- toggle_mop()
+ toggle_mop(usr)
SSvueui.check_uis_for_change(src)
/obj/vehicle/train/cargo/engine/pussywagon/attackby(obj/item/W as obj, mob/user as mob)
@@ -66,7 +64,6 @@
user.drop_from_inventory(W, src)
key = W
to_chat(user, SPAN_NOTICE("You slide the key into the ignition."))
- verbs += /obj/vehicle/train/cargo/engine/verb/remove_key
else
to_chat(user, SPAN_WARNING("\The [src] already has a key inserted."))
return
@@ -80,9 +77,6 @@
..()
update_stats()
- verbs += /obj/vehicle/train/cargo/engine/pussywagon/verb/toggle_mop
- verbs += /obj/vehicle/train/cargo/engine/pussywagon/verb/toggle_hoover
-
/obj/vehicle/train/cargo/engine/pussywagon/turn_off()
..()
@@ -91,31 +85,17 @@
var/obj/vehicle/train/cargo/trolley/pussywagon/PW = tow
PW.engine_off()
- verbs -= /obj/vehicle/train/cargo/engine/pussywagon/verb/toggle_mop
- verbs -= /obj/vehicle/train/cargo/engine/pussywagon/verb/toggle_hoover
-
-/obj/vehicle/train/cargo/engine/pussywagon/verb/toggle_mop()
- set name = "Toggle Mop-o-matic"
- set category = "Vehicle"
- set src in view(0)
-
- if(usr.incapacitated())
- return
-
+/obj/vehicle/train/cargo/engine/pussywagon/proc/toggle_mop(var/mob/user)
if(on && tow)
if(istype(tow,/obj/vehicle/train/cargo/trolley/pussywagon))
var/obj/vehicle/train/cargo/trolley/pussywagon/PW = tow
if(!PW.bucket)
- to_chat(usr, SPAN_WARNING("You must insert a reagent container first!"))
+ to_chat(user, SPAN_WARNING("You must insert a reagent container first!"))
return
PW.mop_toggle()
-/obj/vehicle/train/cargo/engine/pussywagon/verb/toggle_hoover()
- set name = "Toggle Space Hoover"
- set category = "Vehicle"
- set src in view(0)
-
- if(usr.incapacitated())
+/obj/vehicle/train/cargo/engine/pussywagon/proc/toggle_hoover(var/mob/user)
+ if(use_check_and_message(user))
return
if(on && tow)
@@ -161,6 +141,7 @@
/obj/vehicle/train/cargo/trolley/pussywagon
name = "janicart deluxe trolley"
desc = "The trolley of the janicart deluxe, equipped with dual rotary mop and a NT-X1 Vacuum Cleaner."
+ desc_info = "You can unlatch this from the control console of the janicart."
icon = 'icons/obj/vehicles.dmi'
icon_state = "jantrolley"
diff --git a/code/modules/vehicles/train.dm b/code/modules/vehicles/train.dm
index 76b6f9149f3..039c5390398 100644
--- a/code/modules/vehicles/train.dm
+++ b/code/modules/vehicles/train.dm
@@ -23,8 +23,8 @@
//-------------------------------------------
// Standard procs
//-------------------------------------------
-/obj/vehicle/train/Initialize()
- . = ..()
+/obj/vehicle/train/setup_vehicle()
+ ..()
for(var/obj/vehicle/train/T in orange(1, src))
latch(T)
@@ -119,20 +119,12 @@
else if(load)
unload(user) //unload if loaded
-/obj/vehicle/train/verb/unlatch_v()
- set name = "Unlatch"
- set desc = "Unhitches this train from the one in front of it."
- set category = "Vehicle"
- set src in view(1)
-
- if(!istype(usr, /mob/living/carbon/human))
+/obj/vehicle/train/attackby(obj/item/W, mob/user)
+ if(W.iswrench())
+ playsound(loc, W.usesound, 70, FALSE)
+ unattach(user)
return
-
- if(!usr.canmove || usr.stat || usr.restrained() || !Adjacent(usr))
- return
-
- unattach(usr)
-
+ return ..()
//-------------------------------------------
// Latching/unlatching procs
diff --git a/code/modules/vehicles/vehicle.dm b/code/modules/vehicles/vehicle.dm
index 2a29f4a50a1..6b155441264 100644
--- a/code/modules/vehicles/vehicle.dm
+++ b/code/modules/vehicles/vehicle.dm
@@ -42,12 +42,11 @@
//-------------------------------------------
// Standard procs
//-------------------------------------------
-/obj/vehicle/New()
- ..()
- //spawn the cell you want in each vehicle
-
/obj/vehicle/Initialize()
. = ..()
+ setup_vehicle()
+
+/obj/vehicle/proc/setup_vehicle()
LAZYADD(can_buckle, /mob/living)
/obj/vehicle/Move()
diff --git a/html/changelogs/geeves-non_lag_vehicles.yml b/html/changelogs/geeves-non_lag_vehicles.yml
new file mode 100644
index 00000000000..0324b90d569
--- /dev/null
+++ b/html/changelogs/geeves-non_lag_vehicles.yml
@@ -0,0 +1,7 @@
+author: Geeves
+
+delete-after: True
+
+changes:
+ - tweak: "Vehicle actions are no longer done via verbs in the top right, or the right click menu. Check the extra examine info for instructions on how to operate vehicles."
+ - tweak: "You now use wrenches to unlatch vehicles."
\ No newline at end of file