diff --git a/code/modules/recycling/conveyor2.dm b/code/modules/recycling/conveyor2.dm index 957c3b574dc..d3112837566 100644 --- a/code/modules/recycling/conveyor2.dm +++ b/code/modules/recycling/conveyor2.dm @@ -37,6 +37,8 @@ operating = 1 setmove() + + /obj/machinery/conveyor/proc/setmove() if(operating == 1) movedir = forwards @@ -78,6 +80,14 @@ // attack with item, place item on conveyor /obj/machinery/conveyor/attackby(var/obj/item/I, mob/user) + if(istype(I, /obj/item/weapon/crowbar)) + if(!(stat & BROKEN)) + var/obj/item/conveyor_construct/C = new/obj/item/conveyor_construct(src.loc) + C.id = id + transfer_fingerprints_to(C) + user << "You remove the conveyor belt." + qdel(src) + return if(isrobot(user)) return //Carn: fix for borgs dropping their modules on conveyor belts if(I.loc != user) return // This should stop mounted modules ending up outside the module. @@ -162,8 +172,10 @@ -/obj/machinery/conveyor_switch/New() - ..() +/obj/machinery/conveyor_switch/New(loc, newid) + ..(loc) + if(!id) + id = newid update() spawn(5) // allow map load @@ -221,6 +233,15 @@ S.position = position S.update() + +/obj/machinery/conveyor_switch/attackby(obj/item/I, mob/user, params) + if(istype(I, /obj/item/weapon/crowbar)) + var/obj/item/conveyor_switch_construct/C = new/obj/item/conveyor_switch_construct(src.loc) + C.id = id + transfer_fingerprints_to(C) + user << "You deattach the conveyor switch." + qdel(src) + /obj/machinery/conveyor_switch/oneway var/convdir = 1 //Set to 1 or -1 depending on which way you want the convayor to go. (In other words keep at 1 and set the proper dir on the belts.) desc = "A conveyor control switch. It appears to only go in one direction." @@ -240,3 +261,67 @@ if(S.id == src.id) S.position = position S.update() + + + +// +// CONVEYOR CONSTRUCTION STARTS HERE +// + +/obj/item/conveyor_construct + icon = 'icons/obj/recycling.dmi' + icon_state = "conveyor0" + name = "conveyor belt assembly" + desc = "A conveyor belt assembly." + w_class = 4 + var/id = "" //inherited by the belt + +/obj/item/conveyor_construct/attackby(obj/item/I, mob/user, params) + ..() + if(istype(I, /obj/item/conveyor_switch_construct)) + user << "You link the switch to the conveyor belt assembly." + var/obj/item/conveyor_switch_construct/C = I + id = C.id + +/obj/item/conveyor_construct/afterattack(atom/A, mob/user, proximity) + if(!proximity || user.stat || !istype(A, /turf/simulated/floor) || istype(A, /area/shuttle)) + return + var/cdir = get_dir(A, user) + if(!(cdir in cardinal) || A == user.loc) + return + for(var/obj/machinery/conveyor/CB in A) + if(CB.dir == cdir || CB.dir == turn(cdir,180)) + return + cdir |= CB.dir + qdel(CB) + var/obj/machinery/conveyor/C = new/obj/machinery/conveyor(A,cdir) + C.id = id + transfer_fingerprints_to(C) + qdel(src) + +/obj/item/conveyor_switch_construct + name = "conveyor switch assembly" + desc = "A conveyor control switch assembly." + icon = 'icons/obj/recycling.dmi' + icon_state = "switch-off" + w_class = 4 + var/id = "" //inherited by the switch + +/obj/item/conveyor_switch_construct/New() + ..() + id = rand() //this couldn't possibly go wrong + +/obj/item/conveyor_switch_construct/afterattack(atom/A, mob/user, proximity) + if(!proximity || user.stat || !istype(A, /turf/simulated/floor) || istype(A, /area/shuttle)) + return + var/found = 0 + for(var/obj/machinery/conveyor/C in view()) + if(C.id == src.id) + found = 1 + break + if(!found) + user << "\icon[src]The conveyor switch did not detect any linked conveyor belts in range." + return + var/obj/machinery/conveyor_switch/NC = new/obj/machinery/conveyor_switch(A, id) + transfer_fingerprints_to(NC) + qdel(src)