示例#1
0
    //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);
    }