mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-29 08:08:49 +01:00
[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:
@@ -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()
|
||||
. = ..()
|
||||
|
||||
Reference in New Issue
Block a user