anchor.diff:  /obj/machinery/door/firedoor/attackby(obj/item/weapon/C as obj, mob/user as mob, params)
   	add_fingerprint(user)
   	if(operating)	return//Already doing something.
  -	if(istype(C, /obj/item/weapon/weldingtool))
  +
  +	if(constructing) //Construction steps
  +		if(!panelOpen)
  +			return
  +		switch(constructionStep)
  +			if(CONSTRUCTION_PANEL_OPEN)
  +				if(istype(C, /obj/item/weapon/crowbar))
  +					playsound(get_turf(src), 'sound/items/Crowbar.ogg', 50, 1)
  +					user.visible_message("<span class='notice'>[user] starts prying something out from [src]...</span>", \
  +										 "<span class='notice'>You begin prying out the wire cover...</span>")
  +					if(!do_after(user, 50)) return
  +					playsound(get_turf(src), 'sound/items/Deconstruct.ogg', 50, 1)
  +					user.visible_message("<span class='notice'>[user] pries out a metal plate from [src], exposing the wires.</span>", \
  +										 "<span class='notice'>You remove the cover plate from [src], exposing the wires.</span>")
  +					constructionStep = CONSTRUCTION_WIRES_EXPOSED
  +					return
  +			if(CONSTRUCTION_WIRES_EXPOSED)
  +				if(istype(C, /obj/item/weapon/wirecutters))
  +					playsound(get_turf(src), 'sound/items/Wirecutter.ogg', 50, 1)
  +					user.visible_message("<span class='notice'>[user] starts cutting the wires from [src]...</span>", \
  +										 "<span class='notice'>You begin removing [src]'s wires...</span>")
  +					if(!do_after(user, 60)) return
  +					user.visible_message("<span class='notice'>[user] removes the wires from [src].</span>", \
  +										 "<span class='notice'>You remove the wiring from [src], exposing the circuit board.</span>")
  +					var/obj/item/stack/cable_coil/B = new(get_turf(user))
  +					B.amount = 5
  +					constructionStep = CONSTRUCTION_GUTTED
  +					return
  +				if(istype(C, /obj/item/weapon/weldingtool))
  +					var/obj/item/weapon/weldingtool/W = C
  +					if(W.remove_fuel(1, user))
  +						playsound(get_turf(src), 'sound/items/Welder.ogg', 50, 1)
  +						user.visible_message("<span class='notice'>[user] starts welding a metal plate into [src]...</span>", \
  +											 "<span class='notice'>You begin welding the cover plate back onto [src]...</span>")
  +						if(!do_after(user, 80)) return
  +						playsound(get_turf(src), 'sound/items/Welder2.ogg', 50, 1)
  +						user.visible_message("<span class='notice'>[user] welds the metal plate into [src].</span>", \
  +											 "<span class='notice'>You weld [src]'s cover plate into place, hiding the wires.</span>")
  +					constructionStep = CONSTRUCTION_PANEL_OPEN
  +					return
  +			if(CONSTRUCTION_GUTTED)
  +				if(istype(C, /obj/item/weapon/crowbar))
  +					user.visible_message("<span class='notice'>[user] begins removing the circuit board from [src]...</span>", \
  +										 "<span class='notice'>You begin prying out the circuit board from [src]...</span>")
  +					playsound(get_turf(src), 'sound/items/Crowbar.ogg', 50, 1)
  +					if(!do_after(user, 50)) return
  +					user.visible_message("<span class='notice'>[user] removes [src]'s circuit board.</span>", \
  +										 "<span class='notice'>You remove the circuit board from [src].</span>")
  +					new /obj/item/weapon/firelock_board(get_turf(user))
  +					playsound(get_turf(src), 'sound/items/Crowbar.ogg', 50, 1)
  +					constructionStep = CONSTRUCTION_NOCIRCUIT
  +					return
  +				if(istype(C, /obj/item/stack/cable_coil))
  +					var/obj/item/stack/cable_coil/B = C
  +					if(B.amount < 5)
  +						user << "<span class='warning'>You need more wires to add wiring to [src].</span>"
  +						return
  +					user.visible_message("<span class='notice'>[user] begins wiring [src]...</span>", \
  +										 "<span class='notice'>You begin adding wires to [src]...</span>")
  +					playsound(get_turf(src), 'sound/items/Deconstruct.ogg', 50, 1)
  +					if(!do_after(user, 60)) return
  +					user.visible_message("<span class='notice'>[user] adds wires to [src].</span>", \
  +										 "<span class='notice'>You wire [src].</span>")
  +					playsound(get_turf(src), 'sound/items/Deconstruct.ogg', 50, 1)
  +					B.use(5)
  +					constructionStep = CONSTRUCTION_WIRES_EXPOSED
  +					return
  +			if(CONSTRUCTION_NOCIRCUIT)
  +				if(istype(C, /obj/item/weapon/weldingtool))
  +					var/obj/item/weapon/weldingtool/W = C
  +					if(!W.remove_fuel(1,user))
  +						playsound(get_turf(src), 'sound/items/Welder.ogg', 50, 1)
  +						user.visible_message("<span class='notice'>[user] begins cutting apart [src]'s frame.</span>", \
  +											 "<span class='notice'>You begin slicing apart [src].</span>")
  +						if(!do_after(user, 80)) return
  +						user.visible_message("<span class='notice'>[user] cuts apart [src]!</span>", \
  +											 "<span class='notice'>You cut apart [src] into metal.</span>")
  +						playsound(get_turf(src), 'sound/items/Welder2.ogg', 50, 1)
  +						var/obj/item/stack/sheet/metal/M = new(get_turf(user))
  +						M.amount = 7
  +					return
  +				if(istype(C, /obj/item/weapon/firelock_board))
  +					user.visible_message("<span class='notice'>[user] starts adding [C] to [src]...</span>", \
  +										 "<span class='notice'>You begin adding a circuit board to [src]...</span>")
  +					playsound(get_turf(src), 'sound/items/Deconstruct.ogg', 50, 1)
  +					if(!do_after(user, 40)) return
  +					user.drop_item()
  +					qdel(C)
  +					user.visible_message("<span class='notice'>[user] adds a circuit to [src].</span>", \
  +										 "<span class='notice'>You insert and secure [C].</span>")
  +					playsound(get_turf(src), 'sound/items/Deconstruct.ogg', 50, 1)
  +					constructionStep = CONSTRUCTION_GUTTED
  +					return
  +
  +
  +	if(istype(C, /obj/item/weapon/weldingtool) && !constructing)
   		var/obj/item/weapon/weldingtool/W = C
   		if(W.remove_fuel(0, user))
   			blocked = !blocked
  
positive.code: 		else	//close it up again	//fucking 10/10 commenting here einstein
  			close()
  			return
  	return
  
  /obj/machinery/door/firedoor/attack_ai(mob/user as mob)
  
negative.code: 	var/nextstate = null
  	sub_door = 1
  	closingLayer = 3.11
  	var/constructing = 0
  	var/panelOpen = 0
  	var/constructionStep = CONSTRUCTION_COMPLETE
  
  /obj/machinery/door/firedoor/Bumped(atom/AM)
  	if(p_open || operating)	return
  