diff --git a/code/datums/riding.dm b/code/datums/riding.dm
index 62217ae9636..e169e4046c4 100644
--- a/code/datums/riding.dm
+++ b/code/datums/riding.dm
@@ -1,4 +1,3 @@
-
/datum/riding
var/generic_pixel_x = 0 //All dirs show this pixel_x for the driver
var/generic_pixel_y = 0 //All dirs show this pixel_y for the driver, use these vars if the pixel shift is stable across all dir, override handle_vehicle_offsets otherwise.
@@ -39,7 +38,7 @@
//BUCKLE HOOKS
-/datum/riding/proc/restore_position(mob/living/buckled_mob,force = 0)
+/datum/riding/proc/restore_position(mob/living/buckled_mob)
if(istype(buckled_mob))
buckled_mob.pixel_x = 0
buckled_mob.pixel_y = 0
diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm
index 708c1361863..1da8d9c5f00 100644
--- a/code/modules/mob/living/simple_animal/simple_animal.dm
+++ b/code/modules/mob/living/simple_animal/simple_animal.dm
@@ -84,7 +84,6 @@
//domestication
var/tame = 0
- var/saddled = 0
var/datum/riding/riding_datum = null
/mob/living/simple_animal/New()
@@ -524,7 +523,7 @@
client.screen |= l_hand
//ANIMAL RIDING
-/mob/living/simple_animal/unbuckle_mob(mob/living/buckled_mob,force = 0)
+/mob/living/simple_animal/unbuckle_mob(mob/living/buckled_mob, force = 0, check_loc = 1)
if(riding_datum)
riding_datum.restore_position(buckled_mob)
. = ..()
@@ -535,15 +534,14 @@
if(user.incapacitated())
return
for(var/atom/movable/A in get_turf(src))
- if(A.density)
- if(A != src && A != M)
- return
+ if(A != src && A != M && A.density)
+ return
M.loc = get_turf(src)
riding_datum.handle_vehicle_offsets()
riding_datum.ridden = src
/mob/living/simple_animal/relaymove(mob/user, direction)
- if(tame && saddled && riding_datum)
+ if(tame && riding_datum)
riding_datum.handle_ride(user, direction)
/mob/living/simple_animal/Move(NewLoc,Dir=0,step_x=0,step_y=0)
@@ -553,7 +551,6 @@
riding_datum.handle_vehicle_offsets()
-/mob/living/simple_animal/buckle_mob()
- ..()
+/mob/living/simple_animal/buckle_mob(mob/living/buckled_mob, force = 0, check_loc = 1)
+ . = ..()
riding_datum = new/datum/riding/animal
-
diff --git a/code/modules/vehicles/atv.dm b/code/modules/vehicles/atv.dm
index ebf3f162d03..e1bb65c1758 100644
--- a/code/modules/vehicles/atv.dm
+++ b/code/modules/vehicles/atv.dm
@@ -5,7 +5,7 @@
icon_state = "atv"
var/static/image/atvcover = null
-/obj/vehicle/atv/buckle_mob()
+/obj/vehicle/atv/buckle_mob(mob/living/buckled_mob, force = 0, check_loc = 1)
. = ..()
riding_datum = new/datum/riding/atv
@@ -41,8 +41,7 @@
turret = new(loc)
turret.base = src
-/obj/vehicle/atv/turret/buckle_mob()
- ..()
+/obj/vehicle/atv/turret/buckle_mob(mob/living/buckled_mob, force = 0, check_loc = 1)
+ . = ..()
riding_datum = new/datum/riding/atv/turret
-
diff --git a/code/modules/vehicles/pimpin_ride.dm b/code/modules/vehicles/pimpin_ride.dm
index d169ca70c13..01813f46ff3 100644
--- a/code/modules/vehicles/pimpin_ride.dm
+++ b/code/modules/vehicles/pimpin_ride.dm
@@ -13,11 +13,12 @@
mybag = null
return ..()
-/obj/vehicle/janicart/buckle_mob()
+/obj/vehicle/janicart/buckle_mob(mob/living/buckled_mob, force = 0, check_loc = 0)
. = ..()
riding_datum = new/datum/riding/janicart
+
/obj/item/key/janitor
desc = "A keyring with a small steel key, and a pink fob reading \"Pussy Wagon\"."
icon_state = "keyjanitor"
@@ -83,4 +84,4 @@
mybag.loc = get_turf(user)
user.put_in_hands(mybag)
mybag = null
- update_icon()
+ update_icon()
\ No newline at end of file
diff --git a/code/modules/vehicles/scooter.dm b/code/modules/vehicles/scooter.dm
index 906620f0464..5a4d81eaaf8 100644
--- a/code/modules/vehicles/scooter.dm
+++ b/code/modules/vehicles/scooter.dm
@@ -13,11 +13,9 @@
user << "You remove the handlebars from [src]."
qdel(src)
-/obj/vehicle/scooter/buckle_mob()
- . = ..()
- riding_datum = new/datum/riding/scooter
-/obj/vehicle/scooter/buckle_mob(mob/living/M, force = 0)
+/obj/vehicle/scooter/buckle_mob(mob/living/M, force = 0, check_loc = 1)
+ riding_datum = new/datum/riding/scooter
if(!istype(M))
return 0
if(M.get_num_legs() < 2 && M.get_num_arms() <= 0)
@@ -35,7 +33,7 @@
density = 0
-/obj/vehicle/scooter/skateboard/buckle_mob()
+/obj/vehicle/scooter/skateboard/buckle_mob(mob/living/M, force = 0, check_loc = 1)
. = ..()
riding_datum = new/datum/riding/scooter/skateboard
@@ -122,4 +120,4 @@
user << "You add the rods to [src], creating handlebars."
C.use(2)
new/obj/vehicle/scooter(get_turf(src))
- qdel(src)
+ qdel(src)
\ No newline at end of file
diff --git a/code/modules/vehicles/secway.dm b/code/modules/vehicles/secway.dm
index 4eac21ffa84..c85088ec8da 100644
--- a/code/modules/vehicles/secway.dm
+++ b/code/modules/vehicles/secway.dm
@@ -8,6 +8,6 @@
desc = "A keyring with a small steel key, and a rubber stun baton accessory."
icon_state = "keysec"
-/obj/vehicle/secway/buckle_mob()
+/obj/vehicle/secway/buckle_mob(mob/living/buckled_mob, force = 0, check_loc = 1)
. = ..()
riding_datum = new/datum/riding/secway
\ No newline at end of file
diff --git a/code/modules/vehicles/speedbike.dm b/code/modules/vehicles/speedbike.dm
index ecfcecbc2ed..24c6ecbec74 100644
--- a/code/modules/vehicles/speedbike.dm
+++ b/code/modules/vehicles/speedbike.dm
@@ -6,7 +6,7 @@
var/overlay_state = "cover_blue"
var/image/overlay = null
-/obj/vehicle/space/speedbike/buckle_mob()
+/obj/vehicle/space/speedbike/buckle_mob(mob/living/M, force = 0, check_loc = 1)
. = ..()
riding_datum = new/datum/riding/space/speedbike
@@ -34,4 +34,4 @@
/obj/vehicle/space/speedbike/red
icon_state = "speedbike_red"
- overlay_state = "cover_red"
\ No newline at end of file
+ overlay_state = "cover_red"
diff --git a/code/modules/vehicles/vehicle.dm b/code/modules/vehicles/vehicle.dm
index 2e7f5802c40..3664ad5d705 100644
--- a/code/modules/vehicles/vehicle.dm
+++ b/code/modules/vehicles/vehicle.dm
@@ -25,7 +25,6 @@
icon_state = "key"
w_class = WEIGHT_CLASS_TINY
-
//BUCKLE HOOKS
/obj/vehicle/unbuckle_mob(mob/living/buckled_mob,force = 0)
if(riding_datum)
@@ -45,8 +44,8 @@
if(user.client)
user.client.view = view_range
if(riding_datum)
- riding_datum.handle_vehicle_offsets()
riding_datum.ridden = src
+ riding_datum.handle_vehicle_offsets()
//MOVEMENT
/obj/vehicle/relaymove(mob/user, direction)