diff --git a/code/modules/vehicles/cargo_train.dm b/code/modules/vehicles/cargo_train.dm
index 7bb30f5f08b..b9a36f4c9c7 100644
--- a/code/modules/vehicles/cargo_train.dm
+++ b/code/modules/vehicles/cargo_train.dm
@@ -274,4 +274,4 @@
move_delay = max(0, (-car_limit * active_engines) + train_length - active_engines) //limits base overweight so you cant overspeed trains
move_delay *= (1 / max(1, active_engines)) * 2 //overweight penalty (scaled by the number of engines)
move_delay += config.run_speed //base reference speed
- move_delay *= 0.75 //makes cargo trains 25% faster than running when not overweight
\ No newline at end of file
+ move_delay *= 1.05 //makes cargo trains 5% slower than running when not overweight
\ No newline at end of file
diff --git a/code/modules/vehicles/train.dm b/code/modules/vehicles/train.dm
index dd8ee3064ff..4a853d38112 100644
--- a/code/modules/vehicles/train.dm
+++ b/code/modules/vehicles/train.dm
@@ -42,21 +42,18 @@
if(!A.anchored)
var/turf/T = get_step(A, dir)
if(isturf(T))
- if(!emagged) //if not emagged, bump people away, else just run over them
- A.Move(T)
- else if(!ismob(A)) //always bump objects even if emagged
- A.Move(T)
- if(istype(A, /mob/living))
- var/mob/living/M = A
- var/mob/living/D
- if(istype(load, /mob/living/carbon/human))
- D = load
- D << "\red You hit [M]!"
- visible_message("\red [src] knocks over [M]!")
- M.apply_effects(5, 5) //knock people down if you hit them
- if(emagged) //and do damage if it's emagged
- M.apply_damages(5 * train_length / move_delay) // according to how fast the train is going and how heavy it is
- msg_admin_attack("[D.name] ([D.ckey]) hit [M.name] ([M.ckey]) with [src]. (JMP)")
+ A.Move(T) //bump things away when hit
+
+ if(emagged)
+ if(istype(A, /mob/living))
+ var/mob/living/M = A
+ visible_message("\red [src] knocks over [M]!")
+ M.apply_effects(5, 5) //knock people down if you hit them
+ M.apply_damages(5 * train_length / move_delay) // and do damage according to how fast the train is going and how heavy it is
+ if(istype(load, /mob/living/carbon/human))
+ var/mob/living/D = load
+ D << "\red You hit [M]!"
+ msg_admin_attack("[D.name] ([D.ckey]) hit [M.name] ([M.ckey]) with [src]. (JMP)")
//-------------------------------------------
@@ -128,9 +125,11 @@
if(!istype(T) || !Adjacent(T))
return 0
+ /* --- commented out until we get directional sprites ---
if(dir != T.dir) //cars need to be inline to latch
return 0
-
+ */
+
var/T_dir = get_dir(src, T)
if(dir & T_dir) //if car is ahead