[MIRROR] Skateboard tweaks and buffs. (#26908)

* Skateboard tweaks and buffs.

* Update code/datums/components/riding/riding_vehicle.dm

---------

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
Co-authored-by: Pinta <68373373+softcerv@users.noreply.github.com>
This commit is contained in:
SkyratBot
2024-03-16 05:00:39 -04:00
committed by GitHub
co-authored by Ghom Pinta
parent c1c00f8944
commit daadcb1677
6 changed files with 106 additions and 5 deletions
@@ -169,6 +169,8 @@
/datum/component/riding/vehicle/scooter/skateboard
vehicle_move_delay = 1.5
ride_check_flags = RIDER_NEEDS_LEGS | UNBUCKLE_DISABLED_RIDER
///If TRUE, the vehicle will be slower (but safer) to ride on walk intent.
var/can_slow_down = TRUE
/datum/component/riding/vehicle/scooter/skateboard/handle_specials()
. = ..()
@@ -177,8 +179,82 @@
set_vehicle_dir_layer(EAST, OBJ_LAYER)
set_vehicle_dir_layer(WEST, OBJ_LAYER)
/datum/component/riding/vehicle/scooter/skateboard/RegisterWithParent()
. = ..()
if(can_slow_down)
RegisterSignal(parent, COMSIG_ATOM_EXAMINE, PROC_REF(on_examine))
var/obj/vehicle/ridden/scooter/skateboard/board = parent
if(istype(board))
board.can_slow_down = can_slow_down
/datum/component/riding/vehicle/scooter/skateboard/proc/on_examine(datum/source, mob/user, list/examine_list)
SIGNAL_HANDLER
examine_list += span_notice("Going slow and nice at [EXAMINE_HINT("walk")] speed will prevent crashing into things.")
/datum/component/riding/vehicle/scooter/skateboard/vehicle_mob_buckle(datum/source, mob/living/rider, force = FALSE)
. = ..()
if(can_slow_down)
RegisterSignal(rider, COMSIG_MOVE_INTENT_TOGGLED, PROC_REF(toggle_move_delay))
toggle_move_delay(rider)
/datum/component/riding/vehicle/scooter/skateboard/handle_unbuckle(mob/living/rider)
. = ..()
if(can_slow_down)
toggle_move_delay(rider)
UnregisterSignal(rider, COMSIG_MOVE_INTENT_TOGGLED)
/datum/component/riding/vehicle/scooter/skateboard/proc/toggle_move_delay(mob/living/rider)
SIGNAL_HANDLER
vehicle_move_delay = initial(vehicle_move_delay)
if(rider.move_intent == MOVE_INTENT_WALK)
vehicle_move_delay += 0.6
/datum/component/riding/vehicle/scooter/skateboard/pro
vehicle_move_delay = 1
///This one lets the rider ignore gravity, move in zero g and son on, but only on ground turfs or at most one z-level above them.
/datum/component/riding/vehicle/scooter/skateboard/hover
vehicle_move_delay = 1
override_allow_spacemove = TRUE
/datum/component/riding/vehicle/scooter/skateboard/hover/RegisterWithParent()
. = ..()
RegisterSignal(parent, COMSIG_ATOM_HAS_GRAVITY, PROC_REF(check_grav))
RegisterSignal(parent, COMSIG_MOVABLE_SPACEMOVE, PROC_REF(check_drifting))
hover_check()
///Makes sure that the vehicle is grav-less if capable of zero-g movement. Forced gravity will honestly screw this.
/datum/component/riding/vehicle/scooter/skateboard/hover/proc/check_grav(datum/source, turf/gravity_turf, list/gravs)
SIGNAL_HANDLER
if(override_allow_spacemove)
gravs += 0
///Makes sure the vehicle isn't drifting while it can be maneuvered.
/datum/component/riding/vehicle/scooter/skateboard/hover/proc/check_drifting(datum/source, movement_dir, continuous_move)
SIGNAL_HANDLER
if(override_allow_spacemove)
return COMSIG_MOVABLE_STOP_SPACEMOVE
/datum/component/riding/vehicle/scooter/skateboard/hover/vehicle_moved(atom/movable/source, oldloc, dir, forced)
. = ..()
hover_check(TRUE)
///Makes sure that the hoverboard can move in zero-g in (open) space but only there's a ground turf on the z-level below.
/datum/component/riding/vehicle/scooter/skateboard/hover/proc/hover_check(is_moving = FALSE)
var/atom/movable/movable = parent
if(!isopenspaceturf(movable.loc))
override_allow_spacemove = TRUE
return
var/turf/open/our_turf = movable.loc
var/turf/turf_below = GET_TURF_BELOW(our_turf)
if(our_turf.zPassOut(DOWN) && (isnull(turf_below) || (isopenspaceturf(turf_below) && turf_below.zPassIn(DOWN) && turf_below.zPassOut(DOWN))))
override_allow_spacemove = FALSE
if(turf_below)
our_turf.zFall(movable, falling_from_move = is_moving)
/datum/component/riding/vehicle/scooter/skateboard/wheelys
vehicle_move_delay = 1.75 // SKYRAT EDIT - ORIGINAL: 0
can_slow_down = FALSE
/datum/component/riding/vehicle/scooter/skateboard/wheelys/handle_specials()
. = ..()