anchor.diff:  		return
   
   
  +	///This proc is called before the level loop of DivideOccupations() and will try to select a head, ignoring ALL non-head preferences for every level until it locates a head or runs out of levels to check
   	proc/FillHeadPosition()
   		for(var/level = 1 to 3)
   			for(var/command_position in command_positions)
  
positive.code: 		// Loop through all levels from high to low
  		var/list/shuffledoccupations = shuffle(occupations)
  		for(var/level = 1 to 3)
  
  			// Loop through all unassigned players
  			for(var/mob/new_player/player in unassigned)
  
negative.code: 				if(AssignRole(candidate, command_position))
  					return 1
  		return 0
  
  
  	///This proc is called at the start of the level loop of DivideOccupations() and will cause head jobs to be checked before any other jobs of the same level
  	proc/CheckHeadPositions(var/level)
  		for(var/command_position in command_positions)
  			var/datum/job/job = GetJob(command_position)
  			if(!job)	continue
  			var/list/candidates = FindOccupationCandidates(job, level)
  			if(!candidates.len)	continue
  			var/mob/new_player/candidate = pick(candidates)
  			AssignRole(candidate, command_position)
  		return
  
  
  	proc/FillAIPosition()
  