anchor.diff:  			return 0
   	return ..()
   
  -//
  -//animated blasters, wands, etc
  -//
  +
   
   /mob/living/simple_animal/hostile/mimic/copy/ranged
  -	name = "animated shooty gun"
  -	desc = "there's something fishy here."
  -	environment_smash = 0 //needed? seems weird for them to do so
  -	ranged = 1
  -	retreat_distance = 1 //just enough to shoot
  -	minimum_distance = 6
  -	projectiletype = /obj/item/projectile/magic/
  -	projectilesound = 'sound/items/bikehorn.ogg'
  -	casingtype = null
  -	emote_see = list("aims menacingly")
   	var/obj/item/weapon/gun/TrueGun = null
  -	var/obj/item/weapon/gun/magic/Zapstick = list()
  -	var/obj/item/weapon/gun/projectile/Pewgun = list()
  -	var/obj/item/weapon/gun/energy/Zapgun = list()
  -
  -/mob/living/simple_animal/hostile/mimic/copy/ranged/New(loc, var/obj/copy, var/mob/living/creator, var/destroy_original = 0)
  -	..()
  -
  +	var/obj/item/weapon/gun/magic/Zapstick
  +	var/obj/item/weapon/gun/projectile/Pewgun
  +	var/obj/item/weapon/gun/energy/Zapgun
   
   /mob/living/simple_animal/hostile/mimic/copy/ranged/CopyObject(obj/O, mob/living/creator, destroy_original = 0)
  -	if(destroy_original || CheckObject(O))
  -
  -		O.loc = src
  -		name = O.name
  -		desc = O.desc
  -		icon = O.icon
  -		icon_state = O.icon_state
  -		icon_living = icon_state
  -
  -		if(istype(O, /obj/item/weapon/gun)) //leaving for sanity i guess
  -			var/obj/item/weapon/gun/G = O
  -			health = 15 * G.w_class
  -			melee_damage_upper = G.force
  -			melee_damage_lower = G.force - max(0, (G.force / 2))
  -			move_to_delay = 2 * G.w_class + 1
  -			projectilesound = G.fire_sound
  -			TrueGun = G
  -
  -			if(istype(G, /obj/item/weapon/gun/magic))
  -				Zapstick = G
  -				var/obj/item/ammo_casing/magic/Zapshot = new Zapstick.ammo_type //this is done because ammo_type.proj_type can't be directly checked
  -				projectiletype = Zapshot.projectile_type
  -				qdel(Zapshot) //is this needed? i dare not risk piles of nullspace bullets
  -
  -			if(istype(G, /obj/item/weapon/gun/projectile))
  -				Pewgun = G
  -				var/obj/item/ammo_box/magazine/Pewmag = new Pewgun.mag_type //same problem, mag_type.ammo_type.proj_type can't be checked directly
  -				var/obj/item/ammo_casing/Pewshot = new Pewmag.ammo_type
  -				projectiletype = Pewshot.projectile_type
  -				casingtype = Pewmag.ammo_type
  -				qdel(Pewshot)
  -				qdel(Pewmag)
  -
  -			if(istype(G, /obj/item/weapon/gun/energy))
  -				Zapgun = G
  -				var/selectfiresetting = Zapgun.select
  -				var/obj/item/ammo_casing/energy/Energyammotype = Zapgun.ammo_type[selectfiresetting]
  -				projectiletype = Energyammotype.projectile_type
  -
  -		maxHealth = health
  -		if(creator)
  -			src.creator = creator
  -			faction += "\ref[creator]"
  -		if(destroy_original)
  -			qdel(O)
  -		return 1
  -	return
  +	if(..())
  +		emote_see = list("aims menacingly")
  +		environment_smash = 0 //needed? seems weird for them to do so
  +		ranged = 1
  +		retreat_distance = 1 //just enough to shoot
  +		minimum_distance = 6
  +		var/obj/item/weapon/gun/G = O
  +		melee_damage_upper = G.force
  +		melee_damage_lower = G.force - max(0, (G.force / 2))
  +		move_to_delay = 2 * G.w_class + 1
  +		projectilesound = G.fire_sound
  +		TrueGun = G
  +		if(istype(G, /obj/item/weapon/gun/magic))
  +			Zapstick = G
  +			var/obj/item/ammo_casing/magic/M = Zapstick.ammo_type
  +			projectiletype = initial(M.projectile_type)
  +		if(istype(G, /obj/item/weapon/gun/projectile))
  +			Pewgun = G
  +			var/obj/item/ammo_box/magazine/M = Pewgun.mag_type
  +			var/obj/item/ammo_casing/A = initial(M.ammo_type)
  +			projectiletype = initial(A.projectile_type)
  +			casingtype = initial(M.ammo_type)
  +		if(istype(G, /obj/item/weapon/gun/energy))
  +			Zapgun = G
  +			var/selectfiresetting = Zapgun.select
  +			var/obj/item/ammo_casing/energy/E = Zapgun.ammo_type[selectfiresetting]
  +			projectiletype = initial(E.projectile_type)
   
   /mob/living/simple_animal/hostile/mimic/copy/ranged/OpenFire(the_target)
   	if(Zapgun)
  -		if(Zapgun.power_supply) //sanity
  +		if(Zapgun.power_supply)
   			var/obj/item/ammo_casing/energy/shot = Zapgun.ammo_type[Zapgun.select]
  -			if(Zapgun.power_supply.charge >= shot.e_cost) //if she can zap
  +			if(Zapgun.power_supply.charge >= shot.e_cost)
   				Zapgun.power_supply.use(shot.e_cost)
   				Zapgun.update_icon()
  -				..() //zap 'em
  -	if(Zapstick)
  +				..()
  +	else if(Zapstick)
   		if(Zapstick.charges)
   			Zapstick.charges--
   			Zapstick.update_icon()
   			..()
  -	if(Pewgun)
  +	else if(Pewgun)
   		if(Pewgun.chambered)
   			if(Pewgun.chambered.BB)
   				qdel(Pewgun.chambered.BB)
  
positive.code: 	icon_state = initial(icon_state)
  
  /mob/living/simple_animal/hostile/mimic/crate/death()
  
  	var/obj/structure/closet/crate/C = new(get_turf(src))
  	// Put loot in crate
  	for(var/obj/O in src)
  
negative.code: 		icon_state = O.icon_state
  		icon_living = icon_state
  		overlays = O.overlays
  		if(istype(O, /obj/structure) || istype(O, /obj/machinery))
  			health = (anchored * 50) + 50
  			destroy_objects = 1
  