/obj/structure/vehiclecage name = "vehicle cage" desc = "A large metal lattice that seems to exist solely to annoy consumers." icon = 'icons/obj/storage.dmi' icon_state = "vehicle_cage" density = 1 var/obj/vehicle/my_vehicle var/my_vehicle_type var/paint_color = "#666666" /obj/structure/vehiclecage/examine(mob/user) . = ..() if(my_vehicle) . += "It seems to contain \the [my_vehicle]." /obj/structure/vehiclecage/Initialize() . = ..() if(my_vehicle_type) my_vehicle = new my_vehicle_type(src) for(var/obj/I in get_turf(src)) if(I.density || I.anchored || I == src || !I.simulated || !istype(I, my_vehicle_type)) continue load_vehicle(I) update_icon() /obj/structure/vehiclecage/attack_hand(mob/user as mob) to_chat(user, "You need a wrench to take this apart!") return /obj/structure/vehiclecage/attackby(obj/item/weapon/W as obj, mob/user as mob) var/turf/T = get_turf(src) if(!T) to_chat(user, "You can't open this here!") if(W.is_wrench() && do_after(user, 60 * W.toolspeed, src)) playsound(src, W.usesound, 50, 1) disassemble(W, user) user.visible_message("[user] begins loosening \the [src]'s bolts.") if(W.is_wirecutter() && do_after(user, 70 * W.toolspeed, src)) playsound(src, W.usesound, 50, 1) disassemble(W, user) user.visible_message("[user] begins cutting \the [src]'s bolts.") else return attack_hand(user) /obj/structure/vehiclecage/update_icon() ..() overlays.Cut() underlays.Cut() var/image/framepaint = new(icon = 'icons/obj/storage.dmi', icon_state = "[initial(icon_state)]_a", layer = MOB_LAYER + 1.1) framepaint.plane = MOB_PLANE framepaint.color = paint_color overlays += framepaint for(var/obj/vehicle/V in src.contents) var/image/showcase = new(V) showcase.layer = src.layer - 0.1 underlays += showcase /obj/structure/vehiclecage/MouseDrop_T(var/atom/movable/C, mob/user as mob) if(user && (user.buckled || user.stat || user.restrained() || !Adjacent(user) || !user.Adjacent(C))) return var/obj/vehicle/V if(istype(C, /obj/vehicle)) V = C if(!V) return if(!my_vehicle) load_vehicle(V, user) /obj/structure/vehiclecage/proc/load_vehicle(var/obj/vehicle/V, mob/user as mob) if(user) user.visible_message("[user] loads \the [V] into \the [src].", \ "You load \the [V] into \the [src].", \ "You hear creaking metal.") V.forceMove(src) paint_color = V.paint_color update_icon() /obj/structure/vehiclecage/proc/disassemble(obj/item/weapon/W as obj, mob/user as mob) var/turf/T = get_turf(src) new /obj/item/stack/material/steel(src.loc, 5) for(var/atom/movable/AM in contents) if(AM.simulated) AM.forceMove(T) my_vehicle = null user.visible_message("[user] release \the [src].", \ "You finally release \the [src].", \ "You hear creaking metal.") qdel(src) /obj/structure/vehiclecage/spacebike my_vehicle_type = /obj/vehicle/bike/random /obj/structure/vehiclecage/quadbike my_vehicle_type = /obj/vehicle/train/engine/quadbike/random /obj/structure/vehiclecage/quadtrailer my_vehicle_type = /obj/vehicle/train/trolley/trailer/random