diff --git a/code/modules/vehicles/scooter.dm b/code/modules/vehicles/scooter.dm
index 270c08b774f..75cdd4456ab 100644
--- a/code/modules/vehicles/scooter.dm
+++ b/code/modules/vehicles/scooter.dm
@@ -14,36 +14,32 @@
/obj/vehicle/ridden/scooter/wrench_act(mob/living/user, obj/item/I)
..()
to_chat(user, "You begin to remove the handlebars...")
- if(I.use_tool(src, user, 40, volume=50))
- var/obj/vehicle/ridden/scooter/skateboard/improvised/S = new(drop_location())
- new /obj/item/stack/rods(drop_location(), 2)
- to_chat(user, "You remove the handlebars from [src].")
- if(has_buckled_mobs())
- var/mob/living/carbon/H = buckled_mobs[1]
- unbuckle_mob(H)
- S.buckle_mob(H)
- qdel(src)
+ if(!I.use_tool(src, user, 40, volume=50))
+ return TRUE
+ var/obj/vehicle/ridden/scooter/skateboard/improvised/skater = new(drop_location())
+ new /obj/item/stack/rods(drop_location(), 2)
+ to_chat(user, "You remove the handlebars from [src].")
+ if(has_buckled_mobs())
+ var/mob/living/carbon/carbons = buckled_mobs[1]
+ unbuckle_mob(carbons)
+ skater.buckle_mob(carbons)
+ qdel(src)
return TRUE
/obj/vehicle/ridden/scooter/Moved()
. = ..()
- for(var/m in buckled_mobs)
- var/mob/living/buckled_mob = m
+ for(var/mob/living/buckled_mob as anything in buckled_mobs)
if(buckled_mob.num_legs > 0)
buckled_mob.pixel_y = 5
else
buckled_mob.pixel_y = -4
-/obj/vehicle/ridden/scooter/buckle_mob(mob/living/M, force = FALSE, check_loc = TRUE)
- if(!istype(M))
- return FALSE
- return ..()
-
/obj/vehicle/ridden/scooter/skateboard
name = "skateboard"
desc = "An old, battered skateboard. It's still rideable, but probably unsafe."
icon_state = "skateboard"
density = FALSE
+ ///Sparks datum for when we grind on tables
var/datum/effect_system/spark_spread/sparks
///Whether the board is currently grinding
var/grinding = FALSE
@@ -66,7 +62,7 @@
/obj/vehicle/ridden/scooter/skateboard/Destroy()
if(sparks)
QDEL_NULL(sparks)
- . = ..()
+ return ..()
/obj/vehicle/ridden/scooter/skateboard/relaymove(mob/living/user, direction)
if (grinding || world.time < next_crash)
@@ -119,43 +115,42 @@
icon_state = "[initial(icon_state)]"
return
- var/mob/living/L = buckled_mobs[1]
- L.adjustStaminaLoss(instability*0.5)
- if (L.getStaminaLoss() >= 100)
+ var/mob/living/skater = buckled_mobs[1]
+ skater.adjustStaminaLoss(instability*0.5)
+ if (skater.getStaminaLoss() >= 100)
obj_flags = CAN_BE_HIT
playsound(src, 'sound/effects/bang.ogg', 20, TRUE)
- unbuckle_mob(L)
+ unbuckle_mob(skater)
var/atom/throw_target = get_edge_target_turf(src, pick(GLOB.cardinals))
- L.throw_at(throw_target, 2, 2)
- visible_message("[L] loses [L.p_their()] footing and slams on the ground!")
- L.Paralyze(40)
+ skater.throw_at(throw_target, 2, 2)
+ visible_message("[skater] loses [skater.p_their()] footing and slams on the ground!")
+ skater.Paralyze(40)
grinding = FALSE
icon_state = "[initial(icon_state)]"
- else
- playsound(src, 'sound/vehicles/skateboard_roll.ogg', 50, TRUE)
- if(prob (25))
- var/turf/location = get_turf(loc)
- if(location)
- location.hotspot_expose(1000,1000)
- sparks.start() //the most radical way to start plasma fires
- addtimer(CALLBACK(src, .proc/grind), 1)
+ return
+ playsound(src, 'sound/vehicles/skateboard_roll.ogg', 50, TRUE)
+ if(prob(25))
+ var/turf/location = get_turf(src)
+ if(location)
+ location.hotspot_expose(1000,1000)
+ sparks.start() //the most radical way to start plasma fires
+ addtimer(CALLBACK(src, .proc/grind), 1)
/obj/vehicle/ridden/scooter/skateboard/MouseDrop(atom/over_object)
. = ..()
- var/mob/living/carbon/Skater = usr
- if(!istype(Skater))
+ var/mob/living/carbon/skater = usr
+ if(!istype(skater))
return
- if (over_object == Skater)
- pick_up_board(Skater)
+ if (over_object == skater)
+ pick_up_board(skater)
-/obj/vehicle/ridden/scooter/skateboard/proc/pick_up_board(mob/living/carbon/Skater)
- if (Skater.incapacitated() || !Adjacent(Skater))
+/obj/vehicle/ridden/scooter/skateboard/proc/pick_up_board(mob/living/carbon/skater)
+ if (skater.incapacitated() || !Adjacent(skater))
return
if(has_buckled_mobs())
- to_chat(Skater, "You can't lift this up when somebody's on it.")
+ to_chat(skater, "You can't lift this up when somebody's on it.")
return
- var/board = new board_item_type(get_turf(Skater))
- Skater.put_in_hands(board)
+ skater.put_in_hands(new board_item_type(get_turf(skater)))
qdel(src)
/obj/vehicle/ridden/scooter/skateboard/pro
@@ -193,16 +188,16 @@
w_class = WEIGHT_CLASS_NORMAL
/obj/item/scooter_frame/attackby(obj/item/I, mob/user, params)
- if(istype(I, /obj/item/stack/sheet/iron))
- if(!I.tool_start_check(user, amount=5))
- return
- to_chat(user, "You begin to add wheels to [src].")
- if(I.use_tool(src, user, 80, volume=50, amount=5))
- to_chat(user, "You finish making wheels for [src].")
- new /obj/vehicle/ridden/scooter/skateboard/improvised(user.loc)
- qdel(src)
- else
+ if(!istype(I, /obj/item/stack/sheet/iron))
return ..()
+ if(!I.tool_start_check(user, amount=5))
+ return
+ to_chat(user, "You begin to add wheels to [src].")
+ if(!I.use_tool(src, user, 80, volume=50, amount=5))
+ return
+ to_chat(user, "You finish making wheels for [src].")
+ new /obj/vehicle/ridden/scooter/skateboard/improvised(user.loc)
+ qdel(src)
/obj/item/scooter_frame/wrench_act(mob/living/user, obj/item/I)
..()
@@ -216,33 +211,35 @@
return
/obj/vehicle/ridden/scooter/skateboard/improvised/attackby(obj/item/I, mob/user, params)
- if(istype(I, /obj/item/stack/rods))
- if(!I.tool_start_check(user, amount=2))
- return
- to_chat(user, "You begin making handlebars for [src].")
- if(I.use_tool(src, user, 25, volume=50, amount=2))
- to_chat(user, "You add the rods to [src], creating handlebars.")
- var/obj/vehicle/ridden/scooter/S = new(loc)
- if(has_buckled_mobs())
- var/mob/living/carbon/H = buckled_mobs[1]
- unbuckle_mob(H)
- S.buckle_mob(H)
- qdel(src)
- else
+ if(!istype(I, /obj/item/stack/rods))
return ..()
+ if(!I.tool_start_check(user, amount=2))
+ return
+ to_chat(user, "You begin making handlebars for [src].")
+ if(!I.use_tool(src, user, 25, volume=50, amount=2))
+ return
+ to_chat(user, "You add the rods to [src], creating handlebars.")
+ var/obj/vehicle/ridden/scooter/skaterskoot = new(loc)
+ if(has_buckled_mobs())
+ var/mob/living/carbon/skaterboy = buckled_mobs[1]
+ unbuckle_mob(skaterboy)
+ skaterskoot.buckle_mob(skaterboy)
+ qdel(src)
/obj/vehicle/ridden/scooter/skateboard/improvised/screwdriver_act(mob/living/user, obj/item/I)
- if(..())
- return TRUE
+ . = ..()
+ if(.)
+ return
to_chat(user, "You begin to deconstruct and remove the wheels on [src]...")
- if(I.use_tool(src, user, 20, volume=50))
- to_chat(user, "You deconstruct the wheels on [src].")
- new /obj/item/stack/sheet/iron(drop_location(), 5)
- new /obj/item/scooter_frame(drop_location())
- if(has_buckled_mobs())
- var/mob/living/carbon/H = buckled_mobs[1]
- unbuckle_mob(H)
- qdel(src)
+ if(!I.use_tool(src, user, 20, volume=50))
+ return
+ to_chat(user, "You deconstruct the wheels on [src].")
+ new /obj/item/stack/sheet/iron(drop_location(), 5)
+ new /obj/item/scooter_frame(drop_location())
+ if(has_buckled_mobs())
+ var/mob/living/carbon/skatergirl = buckled_mobs[1]
+ unbuckle_mob(skatergirl)
+ qdel(src)
return TRUE
//Wheelys
@@ -256,13 +253,15 @@
var/obj/item/clothing/shoes/wheelys/shoes = null
///Name of the wheels, for visible messages
var/wheel_name = "wheels"
+ ///Component typepath to attach in [/obj/vehicle/ridden/scooter/skateboard/wheelys/proc/make_ridable()]
+ var/component_type = /datum/component/riding/vehicle/scooter/skateboard/wheelys
/obj/vehicle/ridden/scooter/skateboard/wheelys/make_ridable()
- AddElement(/datum/element/ridable, /datum/component/riding/vehicle/scooter/skateboard/wheelys)
+ AddElement(/datum/element/ridable, component_type)
/obj/vehicle/ridden/scooter/skateboard/wheelys/post_unbuckle_mob(mob/living/M)
if(!has_buckled_mobs())
- to_chat(M, "You pop the wheels back into place.")
+ to_chat(M, "You pop the [wheel_name] back into place.")
moveToNullspace()
shoes.toggle_wheels(FALSE)
return ..()
@@ -283,15 +282,11 @@
name = "roller skates"
desc = "An EightO brand pair of roller skates. Vintage, yet functional!"
instability = 8
-
-/obj/vehicle/ridden/scooter/skateboard/wheelys/rollerskates/make_ridable()
- AddElement(/datum/element/ridable, /datum/component/riding/vehicle/scooter/skateboard/wheelys/rollerskates)
+ component_type = /datum/component/riding/vehicle/scooter/skateboard/wheelys/rollerskates
/obj/vehicle/ridden/scooter/skateboard/wheelys/skishoes
name = "ski shoes"
desc = "Uses patented retractable wheel technology. Never sacrifice speed for style - not that this provides much of either."
instability = 8
wheel_name = "skis"
-
-/obj/vehicle/ridden/scooter/skateboard/wheelys/skishoes/make_ridable()
- AddElement(/datum/element/ridable, /datum/component/riding/vehicle/scooter/skateboard/wheelys/skishoes)
+ component_type = /datum/component/riding/vehicle/scooter/skateboard/wheelys/skishoes
diff --git a/code/modules/vehicles/sealed.dm b/code/modules/vehicles/sealed.dm
index 7f62e45d4f0..46f7502997a 100644
--- a/code/modules/vehicles/sealed.dm
+++ b/code/modules/vehicles/sealed.dm
@@ -31,8 +31,8 @@
. = ..()
if(istype(A, /obj/machinery/door))
var/obj/machinery/door/conditionalwall = A
- for(var/m in occupants)
- conditionalwall.bumpopen(m)
+ for(var/occupant in occupants)
+ conditionalwall.bumpopen(occupant)
/obj/vehicle/sealed/after_add_occupant(mob/M)
. = ..()
diff --git a/code/modules/vehicles/secway.dm b/code/modules/vehicles/secway.dm
index fb1f169e8e9..d73e4cae7e0 100644
--- a/code/modules/vehicles/secway.dm
+++ b/code/modules/vehicles/secway.dm
@@ -28,39 +28,45 @@
smoke.set_up(0, src)
smoke.start()
-/obj/vehicle/ridden/secway/attackby(obj/item/W, mob/living/user, params)
- if(W.tool_behaviour == TOOL_WELDER && !user.combat_mode)
- if(obj_integrity < max_integrity)
- if(W.use_tool(src, user, 0, volume = 50, amount = 1))
- user.visible_message("[user] repairs some damage to [name].", "You repair some damage to \the [src].")
- obj_integrity += min(10, max_integrity-obj_integrity)
- if(obj_integrity == max_integrity)
- to_chat(user, "It looks to be fully repaired now.")
- return TRUE
+/obj/vehicle/ridden/secway/welder_act(mob/living/user, obj/item/I)
+ . = ..()
+ if(.)
+ return
+ if(obj_integrity >= max_integrity)
+ to_chat(user, "It is fully repaired already!")
+ return
+ if(!I.use_tool(src, user, 0, volume = 50, amount = 1))
+ return
+ user.visible_message("[user] repairs some damage to [name].", "You repair some damage to \the [src].")
+ obj_integrity += min(10, max_integrity-obj_integrity)
+ if(obj_integrity >= max_integrity)
+ to_chat(user, "It looks to be fully repaired now.")
+ STOP_PROCESSING(SSobj, src)
- if(istype(W, /obj/item/food/grown/banana))
- // ignore the occupants because they're presumably too distracted to notice the guy stuffing fruit into their vehicle's exhaust. do segways have exhausts? they do now!
- user.visible_message("[user] begins stuffing [W] into [src]'s tailpipe.", "You begin stuffing [W] into [src]'s tailpipe...", ignored_mobs = occupants)
- if(do_after(user, 3 SECONDS, src))
- if(user.transferItemToLoc(W, src))
- user.visible_message("[user] stuffs [W] into [src]'s tailpipe.", "You stuff [W] into [src]'s tailpipe.", ignored_mobs = occupants)
- eddie_murphy = W
+/obj/vehicle/ridden/secway/attackby(obj/item/W, mob/living/user, params)
+ if(!istype(W, /obj/item/food/grown/banana))
+ return ..()
+ // ignore the occupants because they're presumably too distracted to notice the guy stuffing fruit into their vehicle's exhaust. do segways have exhausts? they do now!
+ user.visible_message("[user] begins stuffing [W] into [src]'s tailpipe.", "You begin stuffing [W] into [src]'s tailpipe...", ignored_mobs = occupants)
+ if(!do_after(user, 3 SECONDS, src))
return TRUE
- return ..()
+ if(user.transferItemToLoc(W, src))
+ user.visible_message("[user] stuffs [W] into [src]'s tailpipe.", "You stuff [W] into [src]'s tailpipe.", ignored_mobs = occupants)
+ eddie_murphy = W
+ return TRUE
/obj/vehicle/ridden/secway/attack_hand(mob/living/user, list/modifiers)
- if(eddie_murphy) // v lol
- user.visible_message("[user] begins cleaning [eddie_murphy] out of [src].", "You begin cleaning [eddie_murphy] out of [src]...")
- if(do_after(user, 60, target = src))
- user.visible_message("[user] cleans [eddie_murphy] out of [src].", "You manage to get [eddie_murphy] out of [src].")
- eddie_murphy.forceMove(drop_location())
- eddie_murphy = null
- return
- return ..()
+ if(!eddie_murphy)
+ return ..()
+ user.visible_message("[user] begins cleaning [eddie_murphy] out of [src].", "You begin cleaning [eddie_murphy] out of [src]...")
+ if(!do_after(user, 60, target = src))
+ return ..()
+ user.visible_message("[user] cleans [eddie_murphy] out of [src].", "You manage to get [eddie_murphy] out of [src].")
+ eddie_murphy.forceMove(drop_location())
+ eddie_murphy = null
/obj/vehicle/ridden/secway/examine(mob/user)
. = ..()
-
if(eddie_murphy)
. += "Something appears to be stuck in its exhaust..."
@@ -72,9 +78,10 @@
STOP_PROCESSING(SSobj,src)
return ..()
+//bullets will have a 60% chance to hit any riders
/obj/vehicle/ridden/secway/bullet_act(obj/projectile/P)
- if(prob(60) && buckled_mobs)
- for(var/mob/M in buckled_mobs)
- M.bullet_act(P)
- return TRUE
- return ..()
+ if(!buckled_mobs || prob(40))
+ return ..()
+ for(var/mob/rider as anything in buckled_mobs)
+ rider.bullet_act(P)
+ return TRUE
diff --git a/code/modules/vehicles/speedbike.dm b/code/modules/vehicles/speedbike.dm
index c22399c66da..76daf9ce369 100644
--- a/code/modules/vehicles/speedbike.dm
+++ b/code/modules/vehicles/speedbike.dm
@@ -3,13 +3,11 @@
icon = 'icons/obj/bike.dmi'
icon_state = "speedbike_blue"
layer = LYING_MOB_LAYER
- var/overlay_state = "cover_blue"
- var/mutable_appearance/overlay
+ var/cover_iconstate = "cover_blue"
/obj/vehicle/ridden/speedbike/Initialize()
. = ..()
- overlay = mutable_appearance(icon, overlay_state, ABOVE_MOB_LAYER)
- add_overlay(overlay)
+ add_overlay(image(icon, cover_iconstate, ABOVE_MOB_LAYER))
AddElement(/datum/element/ridable, /datum/component/riding/vehicle/speedbike)
/obj/vehicle/ridden/speedbike/Move(newloc,move_dir)
@@ -19,7 +17,7 @@
/obj/vehicle/ridden/speedbike/red
icon_state = "speedbike_red"
- overlay_state = "cover_red"
+ cover_iconstate = "cover_red"
//BM SPEEDWAGON
@@ -29,15 +27,15 @@
icon = 'icons/obj/car.dmi'
icon_state = "speedwagon"
layer = LYING_MOB_LAYER
- var/static/mutable_appearance/overlay = mutable_appearance(icon, "speedwagon_cover", ABOVE_MOB_LAYER)
max_buckled_mobs = 4
- var/crash_all = FALSE //CHAOS
pixel_y = -48
pixel_x = -48
+ ///Determines whether we throw all things away when ramming them or just mobs, varedit only
+ var/crash_all = FALSE
/obj/vehicle/ridden/speedwagon/Initialize()
. = ..()
- add_overlay(overlay)
+ add_overlay(image(icon, "speedwagon_cover", ABOVE_MOB_LAYER))
AddElement(/datum/element/ridable, /datum/component/riding/vehicle/speedwagon)
/obj/vehicle/ridden/speedwagon/Bump(atom/A)
@@ -45,22 +43,22 @@
if(!A.density || !has_buckled_mobs())
return
- var/atom/throw_target = get_edge_target_turf(A, dir)
if(crash_all)
if(ismovable(A))
var/atom/movable/AM = A
- AM.throw_at(throw_target, 4, 3)
+ AM.throw_at(get_edge_target_turf(A, dir), 4, 3)
visible_message("[src] crashes into [A]!")
playsound(src, 'sound/effects/bang.ogg', 50, TRUE)
- if(ishuman(A))
- var/mob/living/carbon/human/H = A
- H.Paralyze(100)
- H.adjustStaminaLoss(30)
- H.apply_damage(rand(20,35), BRUTE)
- if(!crash_all)
- H.throw_at(throw_target, 4, 3)
- visible_message("[src] crashes into [H]!")
- playsound(src, 'sound/effects/bang.ogg', 50, TRUE)
+ if(!ishuman(A))
+ return
+ var/mob/living/carbon/human/rammed = A
+ rammed.Paralyze(100)
+ rammed.adjustStaminaLoss(30)
+ rammed.apply_damage(rand(20,35), BRUTE)
+ if(!crash_all)
+ rammed.throw_at(get_edge_target_turf(A, dir), 4, 3)
+ visible_message("[src] crashes into [rammed]!")
+ playsound(src, 'sound/effects/bang.ogg', 50, TRUE)
/obj/vehicle/ridden/speedwagon/Moved()
. = ..()