anchor.diff:  	if(!isliving(parent))
   		return COMPONENT_INCOMPATIBLE
   
  -	shooter = parent
  +	var/mob/living/shooter = parent
   	target = targ
   	weapon = wep
   	RegisterSignal(targ, list(COMSIG_MOB_ATTACK_HAND, COMSIG_MOB_ITEM_ATTACK, COMSIG_MOB_THROW, COMSIG_MOB_ITEM_SHOOTED, COMSIG_MOVABLE_MOVED), .proc/trigger_reaction)
  
positive.code: 		damage_mult = GUNPOINT_MULT_STAGE_3
  
  /datum/component/gunpoint/proc/check_deescalate()
  	if(!can_see(shooter, target, GUNPOINT_SHOOTER_STRAY_RANGE))
  		cancel()
  
  /datum/component/gunpoint/proc/trigger_reaction(var/flinch)
  	if(disrupted)
  		return
  	if(flinch != TRUE && shooter.pulling == target) //target won't get shot if they're being moved by the shooter
  		return
  	if(weapon.chambered && weapon.chambered.BB)
  		weapon.chambered.BB.damage *= damage_mult
  
negative.code: 	if(!disrupted)
  		disrupted = TRUE
  		addtimer(CALLBACK(src, .proc/reshooted), 5)
  		to_chat(parent, "<span class='boldwarning'>You lose your aim for a second, try not to bump into things or throw stuff.</span>")
  
  /datum/component/gunpoint/proc/reshooted()
  	disrupted = FALSE
  
  /datum/component/gunpoint/proc/cancel()
  	var/mob/living/shooter = parent
  	shooter.visible_message("<span class='danger'>[shooter] breaks [shooter.p_their()] aim on [target]!</span>", \
  		"<span class='danger'>You are no longer aiming [weapon] at [target].</span>", target)
  	to_chat(target, "<span class='userdanger'>[shooter] breaks [shooter.p_their()] aim on you!</span>")
  	qdel(src)
  
  /datum/component/gunpoint/proc/flinch(damage, damagetype, def_zone)
  	var/mob/living/shooter = parent
  
  	var/flinch_chance = 50
  	var/gun_hand = LEFT_HANDS
  
  