From a4444b2ef27b3bddd66b7b1aea509db1c70f13a0 Mon Sep 17 00:00:00 2001 From: Tigercat2000 Date: Fri, 25 Sep 2015 10:15:44 -0700 Subject: [PATCH] Fix vehicles being able to drive in space Unfortunately, it COMPLETELY stops vehicles from moving in space, including via jetpack and other such things. Sorry, wizard car. :( --- code/modules/vehicle/train/train.dm | 9 ++++++ .../modules/vehicle/train/trains/ambulance.dm | 13 +------- .../vehicle/train/trains/cargo/cargo_train.dm | 12 -------- code/modules/vehicle/train/trains/janicart.dm | 12 +------- code/modules/vehicle/vehicle.dm | 30 ++++++++++++++----- 5 files changed, 33 insertions(+), 43 deletions(-) diff --git a/code/modules/vehicle/train/train.dm b/code/modules/vehicle/train/train.dm index aaf88bdbd18..cf318c04a64 100644 --- a/code/modules/vehicle/train/train.dm +++ b/code/modules/vehicle/train/train.dm @@ -36,6 +36,15 @@ unattach() return 0 +/obj/vehicle/train/can_move() + if(!is_train_head()) + return 1 //towed objects do not need power to Move() + + if(!..()) + return 0 + return 1 + + /obj/vehicle/train/Bump(atom/Obstacle) if(!istype(Obstacle, /atom/movable)) return diff --git a/code/modules/vehicle/train/trains/ambulance.dm b/code/modules/vehicle/train/trains/ambulance.dm index 5076dc97659..813a2a918aa 100644 --- a/code/modules/vehicle/train/trains/ambulance.dm +++ b/code/modules/vehicle/train/trains/ambulance.dm @@ -44,21 +44,10 @@ key = new() /obj/vehicle/train/ambulance/engine/Move() - if(on && cell.charge < charge_use) - turn_off() - update_stats() - if(load && is_train_head()) - load << "The drive motor briefly whines, then drones to a stop." - - if(is_train_head() && !on) - return 0 - . = ..() - handle_rotation() update_mob() - /obj/vehicle/train/ambulance/trolley/attackby(obj/item/weapon/W as obj, mob/user as mob, params) if(open && istype(W, /obj/item/weapon/wirecutters)) passenger_allowed = !passenger_allowed @@ -177,7 +166,7 @@ return 0 if(is_train_head()) - if(direction == reverse_direction(dir)) + if(direction == reverse_direction(dir) && tow) //can reverse with no tow return 0 if(Move(get_step(src, direction))) return 1 diff --git a/code/modules/vehicle/train/trains/cargo/cargo_train.dm b/code/modules/vehicle/train/trains/cargo/cargo_train.dm index 84ee2064045..338432fabad 100644 --- a/code/modules/vehicle/train/trains/cargo/cargo_train.dm +++ b/code/modules/vehicle/train/trains/cargo/cargo_train.dm @@ -47,18 +47,6 @@ overlays += I turn_off() //so engine verbs are correctly set -/obj/vehicle/train/cargo/engine/Move() - if(on && cell.charge < charge_use) - turn_off() - update_stats() - if(load && is_train_head()) - load << "The drive motor briefly whines, then drones to a stop." - - if(is_train_head() && !on) - return 0 - - return ..() - /obj/vehicle/train/cargo/trolley/attackby(obj/item/weapon/W as obj, mob/user as mob, params) if(open && istype(W, /obj/item/weapon/wirecutters)) passenger_allowed = !passenger_allowed diff --git a/code/modules/vehicle/train/trains/janicart.dm b/code/modules/vehicle/train/trains/janicart.dm index 6f912971308..a1fae332782 100644 --- a/code/modules/vehicle/train/trains/janicart.dm +++ b/code/modules/vehicle/train/trains/janicart.dm @@ -51,20 +51,10 @@ R.my_atom = src /obj/vehicle/train/janitor/engine/Move() - if(on && cell.charge < charge_use) - turn_off() - update_stats() - if(load && is_train_head()) - load << "The drive motor briefly whines, then drones to a stop." - - if(is_train_head() && !on) - return 0 - + . = ..() handle_rotation() update_mob() - return ..() - /obj/vehicle/train/janitor/trolley/attackby(obj/item/weapon/W as obj, mob/user as mob, params) if(openTop) W.loc = src diff --git a/code/modules/vehicle/vehicle.dm b/code/modules/vehicle/vehicle.dm index 6341bbc5c31..eb8c4f816b4 100644 --- a/code/modules/vehicle/vehicle.dm +++ b/code/modules/vehicle/vehicle.dm @@ -42,10 +42,7 @@ //spawn the cell you want in each vehicle /obj/vehicle/Move() - if(world.time > l_move_time + move_delay) - if(on && powered && cell.charge < charge_use) - turn_off() - + if(can_move()) var/init_anc = anchored anchored = 0 if(!..()) @@ -65,6 +62,23 @@ else return 0 +/obj/vehicle/proc/can_move() + if(world.time <= l_move_time + move_delay) + return 0 + + if(!on || !powered) + return 0 + + if(on && powered && cell.charge < charge_use) + turn_off() + return 0 + + if(istype(loc, /turf/space)) + return 0 + + return 1 + + /obj/vehicle/attackby(obj/item/weapon/W as obj, mob/user as mob, params) if(istype(W, /obj/item/weapon/hand_labeler)) return @@ -224,19 +238,19 @@ /obj/vehicle/proc/powercheck() if(!cell && !powered) - return + return 0 if(!cell && powered) turn_off() - return + return 0 if(cell.charge < charge_use) turn_off() - return + return 0 if(cell && powered) turn_on() - return + return 1 /obj/vehicle/proc/insert_cell(var/obj/item/weapon/stock_parts/cell/C, var/mob/living/carbon/human/H) if(cell)