anchor.diff:  	playsound(get_turf(src), 'sound/effects/pop.ogg', 50, 1, -6)
   	new /obj/effect/dummy/holograph(target, src)
   
  +/obj/item/device/holoprojector/attackby(obj/item/I, mob/user, params)
  +	if(istype(I, /obj/item/weapon/screwdriver))
  +		if(laser)
  +			laser.loc = get_turf(src.loc)
  +			laser = null
  +			replaced_parts = TRUE
  +		if(cap)
  +			cap.loc = get_turf(src.loc)
  +			cap = null
  +			replaced_parts = TRUE
  +
  +		if(replaced_parts)
  +			replaced_parts = FALSE
  +			user << "<span class='notice'>You pop out the parts from [src].</span>"
  +			for(var/obj/effect/dummy/holograph/H in holographs)
  +				qdel(H)
  +		else
  +			user << "<span class='warning'>[src] does not have any parts installed!</span>"
  +
  +	else if(istype(I, /obj/item/weapon/stock_parts/micro_laser) && !laser)
  +		if(!user.unEquip(I))
  +			return
  +		laser = I
  +		I.loc = src
  +		user << "<span class='notice'>You insert [laser.name] into [src].</span>"
  +
  +		switch(laser.rating)
  +			if(1)
  +				allow_scanning_these = list(/obj/item)
  +			if(2)
  +				allow_scanning_these = list(/obj)
  +			if(3)
  +				allow_scanning_these = list(/obj, /mob)
  +			if(4)
  +				allow_scanning_these = list(/obj, /mob)
  +
  +		range = 1+(laser.rating*2)
  +
  +	else if(istype(I, /obj/item/weapon/stock_parts/capacitor) && !cap)
  +		if(!user.unEquip(I))
  +			return
  +		cap = I
  +		I.loc = src
  +		user << "<span class='notice'>You insert [cap.name] into [src].</span>"
  +
  +		max_holographs = 8*cap.rating
  +
  +
  +/obj/item/device/holoprojector/attack_self(mob/user)
  +	user << "<span class='notice'>You disable the projector.</span>"
  +	for(var/obj/effect/dummy/holograph/H in holographs)
  +		qdel(H)
  +
   /obj/effect/dummy/holograph
   	name = ""
   	desc = ""
   	density = 0
   	var/obj/item/device/holoprojector/parent_projector = null
  +	var/datum/effect_system/spark_spread/spark_system
   
   /obj/effect/dummy/holograph/New(loc, parent)
   	if(parent)
   		parent_projector = parent
   		if(parent_projector.current_item)
   			appearance = parent_projector.current_item.appearance
  -			desc += " It seems to be shimmering a little..."
  +			dir = parent_projector.current_item_dir
  +			if(prob(100 - (parent_projector.cap.rating*11.25 + parent_projector.laser.rating*11.25))) //Better parts, higher chance of quality hologram, up to 90%
  +				desc += " <span class='italics'>It seems to be shimmering a little...</span>"
   		parent_projector.holographs += src
   	..()
   
   /obj/effect/dummy/holograph/Destroy()
  -	visible_message("<span class='danger'>[src] distorts for a moment, then disappears!</span>")
  +	var/msg = pick("[src] distorts for a moment, then disappears!","[src] flickers out of existence!","[src] suddenly disappears!","[src] warps wildly before disappearing!")
  +	visible_message("<span class='danger'>[msg]</span>")
   	if(parent_projector)
   		parent_projector.holographs -= src
   	return ..()
  
positive.code: /obj/effect/dummy/holograph/CtrlClick(mob/user)
  	if(get_dist(src, user) > 1) return
  	visible_message("<span class='danger'>You pass through [src] as you try to grab it!</span>")
  	qdel(src)
negative.code: /obj/item/device/holoprojector
  	name = "holographic object projector"
  	desc = "A device which has the ability to scan objects and create stationary holographs of them."
  	icon = 'icons/obj/device.dmi'
  	icon_state = "signmaker"
  	item_state = "electronic"
  