def bullet_hit(life, bullet, limb):
	_owner = LIFE[bullet['shot_by']]
	_actual_limb = lfe.get_limb(life, limb)
	_items_to_check = []
	
	if 'player' in _owner:
		if bullet['aim_at_limb'] == limb:
			_msg = ['The round hits']
		elif not limb in life['body']:
			return 'The round misses entirely!'
		else:
			_msg = ['The round misses slightly']
		_detailed = True
	elif 'player' in life:
		_msg = ['The round hits']
	else:
		_msg = ['%s hits %s\'s %s' % (items.get_name(bullet), life['name'][0], limb)]
	
	for item_uid in lfe.get_items_attached_to_limb(life, limb):
		_items_to_check.append({'item': item_uid, 'visible': True})
		_item = items.get_item_from_uid(item_uid)
		
		if 'storing' in _item:
			for item_in_container_uid in _item['storing']:
				_chance_of_hitting_item = _item['capacity']/float(_item['max_capacity'])
				
				if random.uniform(0, 1)<_chance_of_hitting_item:
					break
				
				_items_to_check.append({'item': item_in_container_uid, 'visible': False})
		
	for entry in _items_to_check:
		_item = items.get_item_from_uid(entry['item'])
		_item_damage = get_puncture_value(bullet, _item, target_structure_name=_item['name'])
		_item['thickness'] = numbers.clip(_item['thickness']-_item_damage, 0, _item['max_thickness'])
		
		if _item in 'material' and not _item['material'] == 'cloth':
			_speed_mod = _item_damage
			_can_stop = True
			
			bullet['speed'] *= _speed_mod
			bullet['velocity'][0] *= _speed_mod
			bullet['velocity'][1] *= _speed_mod
		else:
			_can_stop = False
		
		if not _item['thickness']:
			_msg.append(', destroying the %s' % _item['name'])

			if _item['type'] == 'explosive':
				items.explode(_item)
			else:
				items.delete_item(_item)
		else:
			if bullet['speed']<=1 and _can_stop:
				_msg.append(', lodging itself in %s' % items.get_name(_item))
				_ret_string = own_language(life, _msg)
			
				if _ret_string.endswith('!'):
					return _ret_string
				else:
					return _ret_string+'.'
			else:
				if 'material' in _item:
					if _item['material'] == 'metal':
						_msg.append(', puncturing the %s' % _item['name'])
					else:
						_msg.append(', ripping through the %s' % _item['name'])
	
	_damage = get_puncture_value(bullet, _actual_limb, target_structure_name=limb)
	_actual_limb['thickness'] = numbers.clip(_actual_limb['thickness']-_damage, 0, _actual_limb['max_thickness'])
	_damage_mod = 1-(_actual_limb['thickness']/float(_actual_limb['max_thickness']))
	
	if limb in life['body']:
		_msg.append(', '+lfe.add_wound(life, limb, cut=_damage*_damage_mod, impact_velocity=bullet['velocity']))
	
	_ret_string = own_language(life, _msg)
	
	if _ret_string.endswith('!'):
		return _ret_string
	else:
		return _ret_string+'.'
dataset/ETHPy150Open flags/Reactor-3/damage.py/bullet_hit/swapped operands of `in`