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: 		if(!istype(O, /obj/item))
  			if(O.level == 1)	//Please don't break underfloor items!
  				continue
  			O.take_damage(aoe_structure_damage, BURN, "laser", FALSE)
  
  /obj/item/projectile/beam/beam_rifle/proc/check_pierce(atom/target)
  	if(!do_pierce)
  
negative.code: /obj/item/weapon/gun/energy/beam_rifle/afterattack(atom/target, mob/living/user, flag, params, passthrough = FALSE)
  	if(!passthrough && (aiming_time > aiming_time_fire_threshold))
  		return
  	if(lastfire > world.time + delay)
  		return
  	lastfire = world.time
  	. = ..()
  
  /obj/item/weapon/gun/energy/beam_rifle/proc/sync_ammo()
  