diff --git a/code/modules/vehicles/speedbike.dm b/code/modules/vehicles/speedbike.dm new file mode 100644 index 00000000000..119aca15fd2 --- /dev/null +++ b/code/modules/vehicles/speedbike.dm @@ -0,0 +1,60 @@ +/obj/vehicle/space/speedbike + name = "Speedbike" + icon = 'icons/obj/bike.dmi' + icon_state = "speedbike_blue" + layer = OBJ_LAYER + keytype = null + vehicle_move_delay = 0 + var/overlay_state = "cover_blue" + var/image/overlay = null + +/obj/vehicle/space/speedbike/New() + ..() + overlay = image("icons/obj/bike.dmi", overlay_state) + overlay.layer = MOB_LAYER + 0.1 + overlays += overlay + +/obj/effect/overlay/temp/speedbike_trail + name = "speedbike trails" + icon_state = "ion_fade" + duration = 20 + randomdir = 0 + +/obj/effect/overlay/temp/speedbike_trail/New(loc,move_dir) + ..() + dir = move_dir + +/obj/vehicle/space/speedbike/Move(newloc,move_dir) + if(buckled_mob) + PoolOrNew(/obj/effect/overlay/temp/speedbike_trail,list(loc,move_dir)) + . = ..() + +/obj/vehicle/space/speedbike/handle_vehicle_layer() + switch(dir) + if(NORTH,SOUTH) + pixel_x = -16 + pixel_y = -16 + if(EAST,WEST) + pixel_x = -18 + pixel_y = 0 + +/obj/vehicle/space/speedbike/handle_vehicle_offsets() + if(buckled_mob) + buckled_mob.dir = dir + switch(dir) + if(NORTH) + buckled_mob.pixel_x = 0 + buckled_mob.pixel_y = -8 + if(SOUTH) + buckled_mob.pixel_x = 0 + buckled_mob.pixel_y = 4 + if(EAST) + buckled_mob.pixel_x = -10 + buckled_mob.pixel_y = 5 + if(WEST) + buckled_mob.pixel_x = 10 + buckled_mob.pixel_y = 5 + +/obj/vehicle/space/speedbike/red + icon_state = "speedbike_red" + overlay_state = "cover_red" \ No newline at end of file diff --git a/code/modules/vehicles/vehicle.dm b/code/modules/vehicles/vehicle.dm index 6c6c8dbf6a1..18939a779df 100644 --- a/code/modules/vehicles/vehicle.dm +++ b/code/modules/vehicles/vehicle.dm @@ -89,7 +89,7 @@ unbuckle_mob() if(keycheck(user)) - if(!Process_Spacemove(direction) || !has_gravity(src.loc) || world.time < next_vehicle_move || !isturf(loc)) + if(!Process_Spacemove(direction) || world.time < next_vehicle_move || !isturf(loc)) return next_vehicle_move = world.time + vehicle_move_delay @@ -123,3 +123,18 @@ if(istype(M, /obj/machinery/door) && buckled_mob) M.Bumped(buckled_mob) + +/obj/vehicle/Process_Spacemove(direction) + if(has_gravity(src)) + return 1 + + if(pulledby) + return 1 + + return 0 + +/obj/vehicle/space + pressure_resistance = INFINITY + +/obj/vehicle/space/Process_Spacemove(direction) + return 1 \ No newline at end of file diff --git a/icons/obj/bike.dmi b/icons/obj/bike.dmi new file mode 100644 index 00000000000..db4cb6d1aa0 Binary files /dev/null and b/icons/obj/bike.dmi differ diff --git a/tgstation.dme b/tgstation.dme index 45459286f43..fd7e6d8d7c4 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -1632,6 +1632,7 @@ #include "code\modules\vehicles\atv.dm" #include "code\modules\vehicles\pimpin_ride.dm" #include "code\modules\vehicles\secway.dm" +#include "code\modules\vehicles\speedbike.dm" #include "code\modules\vehicles\vehicle.dm" #include "code\orphaned procs\AStar.dm" #include "code\orphaned procs\dbcore.dm"