anchor.diff:  			if(structure_pierce++ < structure_pierce_amount)
   				if(isobj(AM))
   					var/obj/O = AM
  -					O.take_damage((impact_structure_damage + aoe_structure_damage) * structure_bleed_coeff, BURN, "energy", FALSE)
  +					O.take_damage((impact_structure_damage + aoe_structure_damage) * structure_bleed_coeff * get_damage_coeff(AM), BURN, "energy", FALSE)
   				loc = get_turf(AM)
   				return TRUE
   	return FALSE
   
  +/obj/item/projectile/beam/beam_rifle/proc/get_damage_coeff(atom/target)
  +	if(istype(target, /obj/machinery/door))
  +		return 0.4
  +	if(istype(target, /obj/structure/window))
  +		return 0.5
  +	return 1
  +
   /obj/item/projectile/beam/beam_rifle/proc/handle_impact(atom/target)
   	if(isobj(target))
   		var/obj/O = target
  -		O.take_damage(impact_structure_damage, BURN, "laser", FALSE)
  +		O.take_damage(impact_structure_damage * get_damage_coeff(target), BURN, "laser", FALSE)
   	if(isliving(target))
   		var/mob/living/L = target
   		L.adjustFireLoss(impact_direct_damage)
  
positive.code: 	var/noscope = FALSE	//Can you fire this without a scope?
  	cell_type = /obj/item/weapon/stock_parts/cell/beam_rifle
  	canMouseDown = TRUE
  	var/aiming = FALSE
  	var/aiming_time = 10
  	var/aiming_time_fire_threshold = 2
  	var/aiming_time_left = 10
  	var/aiming_time_increase_user_movement = 3
  	var/aiming_time_increase_angle_multiplier = 1
  
  	var/lastangle = 0
  	var/mob/current_user = null
  	var/list/obj/effect/temp_visual/current_tracers = list()
  
  	var/structure_piercing = 2
  	var/structure_bleed_coeff = 0.7
  	var/wall_pierce_amount = 0
  	var/wall_devastate = 0
  	var/aoe_structure_range = 1
  	var/aoe_structure_damage = 50
  	var/aoe_fire_range = 2
  	var/aoe_fire_chance = 50
  	var/aoe_mob_range = 1
  	var/aoe_mob_damage = 30
  	var/impact_structure_damage = 80
  	var/projectile_damage = 35
  	var/projectile_stun = 0
  	var/projectile_setting_pierce = TRUE
  	var/delay = 40
  
  	var/static/image/charged_overlay = image(icon = 'icons/obj/guns/energy.dmi', icon_state = "esniper_charged")
  	var/static/image/drained_overlay = image(icon = 'icons/obj/guns/energy.dmi', icon_state = "esniper_empty")
  
negative.code: 		if(!istype(O, /obj/item))
  			if(O.level == 1)	//Please don't break underfloor items!
  				continue
  			O.take_damage(aoe_structure_damage * get_damage_coeff(O), BURN, "laser", FALSE)
  
  /obj/item/projectile/beam/beam_rifle/proc/check_pierce(atom/target)
  	if(!do_pierce)
  