From 7cae8d2016d36a839174d4bb4a2ca603f3a56602 Mon Sep 17 00:00:00 2001 From: Verkister Date: Sat, 8 Jan 2022 18:45:06 +0200 Subject: [PATCH] Fixes riding offsets not counting rider size Fixes riding offsets not counting rider size or the difference between the two, which would end up resulting in small riders on large mounts sitting nowhere near the back of the mount --- code/datums/riding.dm | 1 + code/modules/mob/living/silicon/robot/robot_vr.dm | 10 ++++++---- .../modules/mob/living/simple_mob/simple_mob_vr.dm | 10 ++++++---- .../mob/new_player/sprite_accessories_taur.dm | 14 ++++++++------ 4 files changed, 21 insertions(+), 14 deletions(-) diff --git a/code/datums/riding.dm b/code/datums/riding.dm index ba96dbc405..9dd32dcd93 100644 --- a/code/datums/riding.dm +++ b/code/datums/riding.dm @@ -8,6 +8,7 @@ var/key_name = "the keys" // What the 'keys' for the thing being rided on would be called. var/atom/movable/ridden = null // The thing that the datum is attached to. var/only_one_driver = FALSE // If true, only the person in 'front' (first on list of riding mobs) can drive. + var/rider_size = 1 // VOREStation Edit to figure out offsets for rider. /datum/riding/New(atom/movable/_ridden) ridden = _ridden diff --git a/code/modules/mob/living/silicon/robot/robot_vr.dm b/code/modules/mob/living/silicon/robot/robot_vr.dm index 8a4e2975f8..5afc058cb9 100644 --- a/code/modules/mob/living/silicon/robot/robot_vr.dm +++ b/code/modules/mob/living/silicon/robot/robot_vr.dm @@ -208,12 +208,13 @@ /datum/riding/dogborg/get_offsets(pass_index) // list(dir = x, y, layer) var/mob/living/L = ridden var/scale = L.size_multiplier + var/scale_difference = (L.size_multiplier - rider_size) * 10 var/list/values = list( - "[NORTH]" = list(0, 10*scale, ABOVE_MOB_LAYER), - "[SOUTH]" = list(0, 10*scale, BELOW_MOB_LAYER), - "[EAST]" = list(-5*scale, 10*scale, ABOVE_MOB_LAYER), - "[WEST]" = list(5*scale, 10*scale, ABOVE_MOB_LAYER)) + "[NORTH]" = list(0, 10*scale + scale_difference, ABOVE_MOB_LAYER), + "[SOUTH]" = list(0, 10*scale + scale_difference, BELOW_MOB_LAYER), + "[EAST]" = list(-5*scale, 10*scale + scale_difference, ABOVE_MOB_LAYER), + "[WEST]" = list(5*scale, 10*scale + scale_difference, ABOVE_MOB_LAYER)) return values @@ -254,6 +255,7 @@ . = ..() if(.) + riding_datum.rider_size = M.size_multiplier buckled_mobs[M] = "riding" /mob/living/silicon/robot/MouseDrop_T(mob/living/M, mob/living/user) //Prevention for forced relocation caused by can_buckle. Base proc has no other use. diff --git a/code/modules/mob/living/simple_mob/simple_mob_vr.dm b/code/modules/mob/living/simple_mob/simple_mob_vr.dm index b5b019d083..3349bd433f 100644 --- a/code/modules/mob/living/simple_mob/simple_mob_vr.dm +++ b/code/modules/mob/living/simple_mob/simple_mob_vr.dm @@ -301,12 +301,13 @@ /datum/riding/simple_mob/get_offsets(pass_index) // list(dir = x, y, layer) var/mob/living/simple_mob/L = ridden var/scale = L.size_multiplier + var/scale_difference = (L.size_multiplier - rider_size) * 10 var/list/values = list( - "[NORTH]" = list(0, L.mount_offset_y*scale, ABOVE_MOB_LAYER), - "[SOUTH]" = list(0, L.mount_offset_y*scale, BELOW_MOB_LAYER), - "[EAST]" = list(-L.mount_offset_x*scale, L.mount_offset_y*scale, ABOVE_MOB_LAYER), - "[WEST]" = list(L.mount_offset_x*scale, L.mount_offset_y*scale, ABOVE_MOB_LAYER)) + "[NORTH]" = list(0, L.mount_offset_y*scale + scale_difference, ABOVE_MOB_LAYER), + "[SOUTH]" = list(0, L.mount_offset_y*scale + scale_difference, BELOW_MOB_LAYER), + "[EAST]" = list(-L.mount_offset_x*scale, L.mount_offset_y*scale + scale_difference, ABOVE_MOB_LAYER), + "[WEST]" = list(L.mount_offset_x*scale, L.mount_offset_y*scale + scale_difference, ABOVE_MOB_LAYER)) return values @@ -333,6 +334,7 @@ . = ..() if(.) + riding_datum.rider_size = H.size_multiplier buckled_mobs[H] = "riding" /mob/living/simple_mob/attack_hand(mob/user as mob) diff --git a/code/modules/mob/new_player/sprite_accessories_taur.dm b/code/modules/mob/new_player/sprite_accessories_taur.dm index cc0d2472c2..4fa3d66e1f 100644 --- a/code/modules/mob/new_player/sprite_accessories_taur.dm +++ b/code/modules/mob/new_player/sprite_accessories_taur.dm @@ -26,14 +26,15 @@ //Hoooo boy. /datum/riding/taur/get_offsets(pass_index) // list(dir = x, y, layer) var/mob/living/L = ridden - var/scale_x = L.icon_scale_x * L.size_multiplier //VOREStation Edit - var/scale_y = L.icon_scale_y * L.size_multiplier //VOREStation Edit + var/scale_x = L.icon_scale_x * L.size_multiplier //VOREStation Edit Start + var/scale_y = L.icon_scale_y * L.size_multiplier + var/scale_difference = (L.size_multiplier - rider_size) * 10 var/list/values = list( - "[NORTH]" = list(0, 8*scale_y, ABOVE_MOB_LAYER), - "[SOUTH]" = list(0, 8*scale_y, BELOW_MOB_LAYER), - "[EAST]" = list(-10*scale_x, 8*scale_y, ABOVE_MOB_LAYER), - "[WEST]" = list(10*scale_x, 8*scale_y, ABOVE_MOB_LAYER)) + "[NORTH]" = list(0, 8*scale_y + scale_difference, ABOVE_MOB_LAYER), + "[SOUTH]" = list(0, 8*scale_y + scale_difference, BELOW_MOB_LAYER), + "[EAST]" = list(-10*scale_x, 8*scale_y + scale_difference, ABOVE_MOB_LAYER), + "[WEST]" = list(10*scale_x, 8*scale_y + scale_difference, ABOVE_MOB_LAYER)) //VOREStation Edit End return values @@ -74,6 +75,7 @@ . = ..() if(.) + riding_datum.rider_size = M.size_multiplier buckled_mobs[M] = "riding" /mob/living/carbon/human/MouseDrop_T(mob/living/M, mob/living/user) //Prevention for forced relocation caused by can_buckle. Base proc has no other use.