anchor.diff:  		X.icon_state = old_icon_state1
   
   		for(var/obj/O in T)
  -			var/obj/O2 = DuplicateObject(O , 1, newloc = X, nerf=nerf_weapons)
  +			var/obj/O2 = DuplicateObject(O , perfect_copy=TRUE, newloc = X, nerf=nerf_weapons, holoitem=TRUE)
   			if(!O2) continue
   			copiedobjs += O2.GetAllContents()
   
   		for(var/mob/M in T)
   			if(istype(M, /mob/camera)) continue // If we need to check for more mobs, I'll add a variable
  -			var/mob/SM = DuplicateObject(M , 1, newloc = X)
  +			var/mob/SM = DuplicateObject(M , perfect_copy=TRUE, newloc = X, holoitem=TRUE)
   			copiedobjs += SM.GetAllContents()
   
   		var/global/list/forbidden_vars = list("type","stat","loc","locs","vars", "parent", "parent_type","verbs","ckey","key","x","y","z","contents", "luminosity")
  
positive.code: 			else
  				O.vars[V] = original.vars[V]
  
  	if(istype(O))
  		O.resistance_flags = LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF // holoitems do not burn
  		if(nerf && istype(O,/obj/item))
  			var/obj/item/I = O
  			I.damtype = STAMINA // thou shalt not
  		if(istype(O,/obj/machinery))
  			var/obj/machinery/M = O
  			M.power_change()
  	O.update_icon()
  	return O
  
  
  
negative.code: /proc/DuplicateObject(var/atom/original, var/perfectcopy = TRUE, var/sameloc = FALSE, var/atom/newloc = null, var/nerf = FALSE, var/holoitem=FALSE)
  	if(!original)
  		return null
  	var/atom/O
  
  	if(sameloc)
  		O = new original.type(original.loc)
  