//Tries to generate a quest starting on a given tile. public Boolean generateQuest(int mapX, int mapY) { if (!finalQuestStarted) { int questNum = Random.Range(0, questSet.Length + 1); Quest ranQuest = questSet [questNum]; if (questNum == 5) { if (World.GetChaos() <= 10 && psychoKilling.numKilled >= 6) { finalQuest.start(); } } else if (ranQuest.canBeGivenOut()) { List <GameObject> npcs = map.map [mapX] [mapY].npcs; int count; for (count = 0; count < npcs.Count; count++) { NPC ranPerson = npcs.ElementAt(count).GetComponent <NPC> (); if (ranQuest.personCheck(ranPerson)) { if (ranQuest.numPerson() == 2) { int changeX = Random.Range(-1, 2); int changeY = Random.Range(-1, 2); List <GameObject> npcs2 = map.map [mapX + changeX] [mapY + changeY].npcs; int count2; ranPerson.hasQuest = true; for (count2 = 0; count2 < npcs2.Count; count2++) { NPC ranPerson2 = npcs.ElementAt(count2).GetComponent <NPC> (); if (ranQuest.secondPersonCheck(ranPerson2)) { print("Quest number " + questNum + " given out"); ranQuest.startQuest(ranPerson, ranPerson2); ranPerson2.hasQuest = true; ranPerson.mission = ranQuest; ranPerson2.mission = ranQuest; ranPerson.draw(); ranPerson2.draw(); ranPerson.initQuest(ranQuest); ranPerson.draw(); return(true); } } ranPerson.hasQuest = false; } else { print("Quest number " + questNum + " given out"); ranQuest.startQuest(ranPerson, null); ranPerson.hasQuest = true; ranPerson.mission = ranQuest; ranPerson.draw(); ranPerson.initQuest(ranQuest); ranPerson.draw(); return(true); } } } } } else { if (finalQuest.checkDone()) { World.textbox.Write("Congratulations! You defeated the Psychopathegen!"); //TODO MICHAEL put game end stuff here. } } return(false); }