anchor.diff:  	wall_smash = 1
   	attack_sound = 'sound/weapons/punch3.ogg'
   	status_flags = 0
  +	construct_spells = list(/obj/effect/proc_holder/spell/aoe_turf/conjure/lesserforcewall)
   
   /mob/living/simple_animal/construct/armoured/attackby(var/obj/item/O as obj, var/mob/user as mob)
   	if(O.force)
  
positive.code: 	return
  
  /mob/living/simple_animal/construct/Bump(atom/movable/AM as mob|obj, yes)
  	spawn( 0 )
  		if ((!( yes ) || now_pushing))
  			return
  		now_pushing = 1
  		if(ismob(AM))
  			var/mob/tmob = AM
  			if(istype(tmob, /mob/living/carbon/human) && (FAT in tmob.mutations))
  				if(prob(5))
  					src << "\red <B>You fail to push [tmob]'s fat ass out of the way.</B>"
  					now_pushing = 0
  					return
  			if(!(tmob.status_flags & CANPUSH))
  				now_pushing = 0
  				return
  
  			tmob.LAssailant = src
  		now_pushing = 0
  		..()
  		if (!( istype(AM, /atom/movable) ))
  			return
  		if (!( now_pushing ))
  			now_pushing = 1
  			if (!( AM.anchored ))
  				var/t = get_dir(src, AM)
  				if (istype(AM, /obj/structure/window))
  					if(AM:ini_dir == NORTHWEST || AM:ini_dir == NORTHEAST || AM:ini_dir == SOUTHWEST || AM:ini_dir == SOUTHEAST)
  						for(var/obj/structure/window/win in get_step(AM,t))
  							now_pushing = 0
  							return
  				step(AM, t)
  			now_pushing = null
  		return
  	return
  
  
  /mob/living/simple_animal/construct/attack_animal(mob/living/simple_animal/M as mob)
  	if(istype(M, /mob/living/simple_animal/construct/builder))
  		health += 5
  		M.emote("mends some of \the <EM>[src]'s</EM> wounds")
  	else
  		if(M.melee_damage_upper <= 0)
  			M.emote("[M.friendly] \the <EM>[src]</EM>")
  
negative.code: 			var/damage = O.force
  			if (O.damtype == HALLOSS)
  				damage = 0
  			adjustBruteLoss(damage)
  			for(var/mob/M in viewers(src, null))
  				if ((M.client && !( M.blinded )))
  					M.show_message("\red \b [src] has been attacked with [O] by [user]. ")
  		else
  			for(var/mob/M in viewers(src, null))
  				if ((M.client && !( M.blinded )))
  					M.show_message("\red \b [O] bounces harmlessly off of [src]. ")
  	else
  		usr << "\red This weapon is ineffective, it does no damage."
  		for(var/mob/M in viewers(src, null))
  			if ((M.client && !( M.blinded )))
  				M.show_message("\red [user] gently taps [src] with [O]. ")
  
  
  /mob/living/simple_animal/construct/armoured/bullet_act(var/obj/item/projectile/P)
  	if(istype(P, /obj/item/projectile/energy) || istype(P, /obj/item/projectile/beam))
  		var/reflectchance = 80 - round(P.damage/3)
  		if(prob(reflectchance))
  			adjustBruteLoss(P.damage * 0.5)
  			visible_message("<span class='danger'>The [P.name] gets reflected by [src]'s shell!</span>", \
  							"<span class='userdanger'>The [P.name] gets reflected by [src]'s shell!</span>")
  
  			// Find a turf near or on the original location to bounce to
  			if(P.starting)
  				var/new_x = P.starting.x + pick(0, 0, -1, 1, -2, 2, -2, 2, -2, 2, -3, 3, -3, 3)
  				var/new_y = P.starting.y + pick(0, 0, -1, 1, -2, 2, -2, 2, -2, 2, -3, 3, -3, 3)
  				var/turf/curloc = get_turf(src)
  
  				// redirect the projectile
  				P.original = locate(new_x, new_y, P.z)
  				P.starting = curloc
  				P.current = curloc
  				P.firer = src
  				P.yo = new_y - curloc.y
  				P.xo = new_x - curloc.x
  
  			return -1 // complete projectile permutation
  
  	return (..(P))
  
  
  
  