// Public interactions
		void Awake()
		{
			seasonNumber = 1;
			yearNumber = 1;

			sacrificeCandidates = new List<PersonReference>();
			cultistCandidates = new List<PersonReference>();
			currentTarget = YearTargetFactory.GetYearTargets(yearNumber);
			peoplePool = new PeoplePool();
			traitPool = new TraitPool();
			flavourPool = new FlavourPool();
			cultists = new Cultist[NUMBER_OF_CULTISTS];

			var cultistAssets = new List<SearchableAsset>
			{
				new SearchableAsset() { Profession = Profession.None, Sin = Sin.None, Virtue = Virtue.None }
			};

			// Create the starting Cultists
			numberOfCultists = 2;
			currentPeoplePoolIndex = 2;
			peoplePool.GeneratePeople(numberOfCultists, cultistAssets, false, false);

			cultists[0] = new Cultist() { PersonID = peoplePool.activePool[1].PersonID, Instruction = null };
			cultists[1] = new Cultist() { PersonID = peoplePool.activePool[2].PersonID, Instruction = null };

			GetNewPools(currentTarget.SacrificeTargets, cultistAssets, 20);

			gameWillEnd = false;
		}
		public bool IncrementYear()
		{
			bool gameOver = false;

			if (gameWillEnd)
			{
				gameOver = true;
			}
			else
			{
				yearNumber += 1;
				seasonNumber = 1;

				currentTarget = YearTargetFactory.GetYearTargets(yearNumber);

				var sacrificeAssets = currentTarget.SacrificeTargets;

				var cultistAssets = new List<SearchableAsset>
				{
					new SearchableAsset() { Profession = Profession.None, Sin = Sin.None, Virtue = Virtue.None }
				};

				GetNewPools(sacrificeAssets, cultistAssets, 20);
			}

			return gameOver;
		}
	void Start()
	{
		Cultists = new[]
		{
			Cultist1,
			Cultist2,
			Cultist3,
			Cultist4,
			Cultist5,
			Cultist6,
			Cultist7,
			Cultist8
		};
		currentTarget = GameState.GetCurrentTarget();
		BuildTopUI();

		AssignButton.onClick.AddListener(AssignTask);

		ProgressButton.onClick.AddListener(ProgressSeason);

		InvestigateButton.onClick.AddListener(SetInvestigating);

		ResultsPanel.SetActive(false);
		ResultsCloseButton.onClick.AddListener(CloseResults);

		YearSeasonText.text = string.Format("Season: {0}, Year: {1}", GameState.GetSeasonNumber(), GameState.GetYearNumber());
	}
		public void SetNewTarget(int numberOfCultists, SearchableAsset[] sacrificeTargets)
		{
			currentTarget = new YearTarget()
			{
				NumberOfCultists = numberOfCultists,
				SacrificeTargets = sacrificeTargets
			};
		}
		public static YearTarget GetYearTargets(int yearNumber)
		{
			var nextYearTargets = new YearTarget();
			Random randomNumber = new Random();

			switch (yearNumber)
			{
				case 1:
					nextYearTargets.NumberOfCultists = 3;

					nextYearTargets.SacrificeTargets = new List<SearchableAsset>()
					{
						TraitPool.GenerateRandomAsset(true, false, false, true, randomNumber)
					};
					break;
				case 2:
					nextYearTargets.NumberOfCultists = 4;

					nextYearTargets.SacrificeTargets = new List<SearchableAsset>()
					{
						TraitPool.GenerateRandomAsset(true, false, false, true, randomNumber)
					};
					break;
				case 3:
					nextYearTargets.NumberOfCultists = 5;

					nextYearTargets.SacrificeTargets = new List<SearchableAsset>()
					{
						TraitPool.GenerateRandomAsset(false, false, true, false, randomNumber),
						TraitPool.GenerateRandomAsset(true, false, false, true, randomNumber)
					};
					break;
				case 4:
					nextYearTargets.NumberOfCultists = 6;

					nextYearTargets.SacrificeTargets = new List<SearchableAsset>()
					{
						TraitPool.GenerateRandomAsset(true, false, false, false, randomNumber),
						TraitPool.GenerateRandomAsset(false, false, true, false, randomNumber),
						TraitPool.GenerateRandomAsset(true, false, false, true, randomNumber)
					};
					break;
				case 5:
					nextYearTargets.NumberOfCultists = 7;

					nextYearTargets.SacrificeTargets = new List<SearchableAsset>()
					{
						TraitPool.GenerateRandomAsset(true, false, false, false, randomNumber),
						TraitPool.GenerateRandomAsset(false, true, false, false, randomNumber),
						TraitPool.GenerateRandomAsset(true, false, false, true, randomNumber)
					};
					break;
				case 6:
					nextYearTargets.NumberOfCultists = 7;

					nextYearTargets.SacrificeTargets = new List<SearchableAsset>()
					{
						TraitPool.GenerateRandomAsset(true, false, false, false, randomNumber),
						TraitPool.GenerateRandomAsset(false, true, false, false, randomNumber),
						TraitPool.GenerateRandomAsset(false, false, true, false, randomNumber),
						TraitPool.GenerateRandomAsset(true, false, false, true, randomNumber)
					};
					break;
				case 7:
					nextYearTargets.NumberOfCultists = 8;

					nextYearTargets.SacrificeTargets = new List<SearchableAsset>()
					{
						TraitPool.GenerateRandomAsset(true, true, false, false, randomNumber),
						TraitPool.GenerateRandomAsset(false, true, false, false, randomNumber),
						TraitPool.GenerateRandomAsset(false, false, true, false, randomNumber),
						TraitPool.GenerateRandomAsset(true, false, false, true, randomNumber)
					};
					break;
				case 8:
					nextYearTargets.NumberOfCultists = 8;

					nextYearTargets.SacrificeTargets = new List<SearchableAsset>()
					{
						TraitPool.GenerateRandomAsset(true, false, true, false, randomNumber),
						TraitPool.GenerateRandomAsset(false, true, false, false, randomNumber),
						TraitPool.GenerateRandomAsset(false, false, true, false, randomNumber),
						TraitPool.GenerateRandomAsset(true, false, false, true, randomNumber)
					};
					break;
				case 9:
					nextYearTargets.NumberOfCultists = 8;

					nextYearTargets.SacrificeTargets = new List<SearchableAsset>()
					{
						TraitPool.GenerateRandomAsset(true, false, true, false, randomNumber),
						TraitPool.GenerateRandomAsset(false, true, false, false, randomNumber),
						TraitPool.GenerateRandomAsset(false, false, true, false, randomNumber),
						TraitPool.GenerateRandomAsset(false, false, true, false, randomNumber),
						TraitPool.GenerateRandomAsset(true, false, false, true, randomNumber)
					};
					break;
				case 10:
					nextYearTargets.NumberOfCultists = 8;

					nextYearTargets.SacrificeTargets = new List<SearchableAsset>()
					{
						TraitPool.GenerateRandomAsset(true, true, false, false, randomNumber),
						TraitPool.GenerateRandomAsset(false, true, false, false, randomNumber),
						TraitPool.GenerateRandomAsset(false, true, false, false, randomNumber),
						TraitPool.GenerateRandomAsset(false, false, true, false, randomNumber),
						TraitPool.GenerateRandomAsset(false, false, true, false, randomNumber),
						TraitPool.GenerateRandomAsset(false, true, false, false, randomNumber),
						TraitPool.GenerateRandomAsset(true, false, false, true, randomNumber)
					};
					break;
			}

			return nextYearTargets;
		}