示例#1
0
    public void SelectQuest(QuestObject quest)
    {
        //txtName.text = quest.titel;
        //txtDesc.text = quest.descrip;

        //foreach (Object objective in quest.)
    }
    public override void Initiate()
    {
        isComplete = false;
        if (permanentQuest)
        {
            transform.position = questObject.transform.position;
            transform.SetParent(questObject.transform);

            QuestObject qo = questObject.GetComponent <QuestObject>();
            qo.SetQuest(this);

            return;
        }
        RaycastHit hit;

        if (Physics.Raycast(transform.position + Vector3.up * 20, Vector3.down, out hit))
        {
            GameObject temp = Instantiate(questObject, hit.point + Vector3.up, Quaternion.identity);

            temp.transform.SetParent(transform);

            QuestObject qo = temp.GetComponent <QuestObject>();
            qo.SetQuest(this);
        }
    }
示例#3
0
        //{
        //    "quests": [
        //        {
        //            "id": "Collect",
        //            "difficulty": 1,
        //            "categoryId": 0,
        //            "objectives": [
        //                "Objective \\c[2]1",
        //                "\\c[2]Objective\\c[0] 2"
        //            ],
        //            "resolutions": [
        //                "Resolution 1",
        //                "Resolution 2",
        //                "Resolution \\c[2]3"
        //            ],
        //            "description": [
        //                "Bacon ipsum dolor amet tongue",
        //                "pork chop swine pork loin.",
        //                "sausage beef brisket, rump",
        //                "capicola tenderloin ribeye",
        //                "ribs meatball. Meatloaf",
        //                "chicken \\c[3]burgdoggen\\c[0],",
        //                "Brisket pork chop chislic,",
        //                "shank cupim tenderloin pastrami"
        //            ]
        //    }
        //    ]
        //}

        private void buttonAddQuest_Click(object sender, EventArgs e)
        {
            DialogResult result = MessageBox.Show("Quest will be added.", "Adding Quest", MessageBoxButtons.OKCancel);

            if (result == DialogResult.OK)
            {
                if (HasEmptyBox())
                {
                    MessageBox.Show("Quest incomplete");
                }
                else
                {
                    QuestObject quest = new QuestObject();

                    quest.id          = textBoxQuestName.Text;
                    quest.difficulty  = int.Parse(comboBoxDifficulty.SelectedItem.ToString());
                    quest.categoryId  = int.Parse(comboBoxCategory.SelectedItem.ToString());
                    quest.description = textBoxDescription.Lines;
                    quest.objectives  = textBoxObjectives.Lines;
                    quest.resolutions = textBoxResolutions.Lines;

                    _tempQuestJson.quests.Add(quest);

                    MessageBox.Show("The quest has been added! Please click save to reload the quests.");
                }
            }
        }
示例#4
0
    /// <summary>
    /// Runs when this objects trigger colliders with another
    /// </summary>
    /// <param name="other">The other object colliding with this one</param>
    public void OnTriggerEnter(Collider other)
    {
        if (other.GetComponent <Sword>())
        {
            health -= other.GetComponentInParent <CQExamplePlayer>().Damage;
            player  = other.GetComponentInParent <CQPlayerObject>();
            unit    = other.GetComponentInParent <CQExamplePlayer>();

            if (health <= 0)
            { // Checks if this object is out of health, kills it if that is true
                health = 0;
                if (questObject == null)
                {
                    questObject = GetComponent <QuestObject>();
                }
                if (questObject != null)
                {
                    if (questObject.criteria)
                    {
                        questObject.criteria.Remove(this.gameObject);
                        if (QuestHandler.Instance.availableQuests[player].Contains(questObject.criteria.Quest))
                        {
                            questObject.criteria.Progress(player, unit); // Send quest progress result, with the killer
                        }
                    }
                    Destroy(this.gameObject);
                }
            }
        }
    }
示例#5
0
    public void QuestRequest(QuestObject questGiver)
    {
        QuestUI questUI = UIManager.Instance.GetQuestUI();

        if (questGiver.availableQuests.Count > 0)
        {
            foreach (QuestData questGiverQuest in questGiver.availableQuests)
            {
                int questId = questGiverQuest.id;
                if (masterQuestDictionary.ContainsKey(questId) && masterQuestDictionary[questId].progress == Quest.QuestProgress.Available)
                {
                    questUI.questAvailable = true;
                    questUI.availableQuests.Add(masterQuestDictionary[questId]);
                }
            }
        }

        foreach (QuestData questGiverQuest in questGiver.receivableQuests)
        {
            int questId = questGiverQuest.id;
            if (masterQuestDictionary.ContainsKey(questId) && masterQuestDictionary[questId].progress == Quest.QuestProgress.Accepted || masterQuestDictionary[questId].progress == Quest.QuestProgress.Complete)
            {
                questUI.questRunning = true;
                questUI.runningQuests.Add(masterQuestDictionary[questId]);
            }
        }
    }
示例#6
0
    public override object Read(ES2Reader reader)
    {
        QuestObject data = GetOrCreate <QuestObject>();

        Read(reader, data);
        return(data);
    }
示例#7
0
 public void CheckQuests(QuestObject questGiver)
 {
     QuestManager.Instance.QuestRequest(questGiver);
     if ((questRunning || questAvailable) && !questPanelActive)
     {
         ShowQuestPanel();
     }
 }
示例#8
0
 private void Start()
 {
     foreach (SpawnQuestObject obj in spawnRequiredItems)
     {
         QuestObject newObj = new QuestObject(obj.GetItem(), obj.GetRequiredAmount());
         requiredItems.Add(newObj);
     }
 }
示例#9
0
 void RpcStartQuest(int select)
 {
     isVoting = true;
     transform.GetChild(0).gameObject.SetActive(true);
     currentQuest    = quests[select];
     currentDecision = currentQuest.Decision;
     eventTitle.text = currentQuest.QuestName;
     RunQuest(quests[select].Decision);
 }
示例#10
0
 public void StartQuest(ScriptableQuest startedQuest)
 {
     title = "Quest started: " + startedQuest.missionName;
     announceOrder.Add(title);
     quest = new QuestObject();
     quest.GetData(startedQuest, gameObject);
     activeQuestList.Add(quest);
     UIInfoMission.GetComponent <UIActiveMission>().txtMissionName.text = startedQuest.missionName;
 }
示例#11
0
        public void RequestQuest(QuestObject npcQuestObject)
        {
            if (npcQuestObject.availableQuests.Count > 0)
            {
                for (int i = 0; i < questList.Count; i++)
                {
                    for (int k = 0; k < npcQuestObject.availableQuests.Count; k++)
                    {
                        if (questList[i].quest.id == npcQuestObject.availableQuests[k].quest.id && questList[i].progress == QuestProgress.AVAILABLE)
                        {
                            Debug.Log("QuestID : " + npcQuestObject.availableQuests[k] + " " + questList[i].progress);
                            //test
                            //AcceptQuest(npcQuestObject.availableQuestIDs[k]);
                            //UI
                            QuestUIManager.instance.questAvailable = true;
                            QuestUIManager.instance.availableQuests.Add(questList[i]);
                        }
                    }
                }
            }

            //main quest
            if (currentQuests.mainQuest.quest != null)
            {
                Quest quest = currentQuests.mainQuest.quest;
                if (quest.questType == npcQuestObject.receivableType && currentQuests.mainQuest.progress == QuestProgress.AVAILABLE || currentQuests.mainQuest.progress == QuestProgress.COMPLETE)
                {
                    Debug.Log("Quest Type: " + npcQuestObject.receivableType + " is " + currentQuests.mainQuest.progress);
                    QuestUIManager.instance.questRunning = true;
                    QuestUIManager.instance.activeQuests.Add(currentQuests.mainQuest);
                }
            }
            //side quest
            if (currentQuests.sideQuest.quest != null)
            {
                Quest quest = currentQuests.sideQuest.quest;
                if (quest.questType == npcQuestObject.receivableType && currentQuests.sideQuest.progress == QuestProgress.AVAILABLE || currentQuests.sideQuest.progress == QuestProgress.COMPLETE)
                {
                    Debug.Log("Quest Type: " + npcQuestObject.receivableType + " is " + currentQuests.sideQuest.progress);
                    QuestUIManager.instance.questRunning = true;
                    QuestUIManager.instance.activeQuests.Add(currentQuests.sideQuest);
                }
            }
            //Mission Quest
            if (currentQuests.missionQuest.quest != null)
            {
                Quest quest = currentQuests.missionQuest.quest;
                if (quest.questType == npcQuestObject.receivableType && currentQuests.missionQuest.progress == QuestProgress.AVAILABLE || currentQuests.missionQuest.progress == QuestProgress.COMPLETE)
                {
                    Debug.Log("Quest Type: " + npcQuestObject.receivableType + " is " + currentQuests.missionQuest.progress);
                    QuestUIManager.instance.questRunning = true;
                    QuestUIManager.instance.activeQuests.Add(currentQuests.missionQuest);
                }
            }
        }
示例#12
0
 public bool CheckCompletedQuest(QuestObject npcQuestObject)
 {
     for (int i = 0; i < questList.Count; i++)
     {
         if (questList[i].quest.questType == npcQuestObject.receivableType && questList[i].progress == QuestProgress.COMPLETE)
         {
             return(true);
         }
     }
     return(false);
 }
示例#13
0
    //Charging collision
    void OnCollisionEnter(Collision coll)
    {
        //If the state is not charge do nothing
        if (state != State.Charge)
        {
            return;
        }


        MonsterAI   m  = coll.gameObject.GetComponent <MonsterAI>();
        QuestObject QO = coll.gameObject.GetComponent <QuestObject>();

        //If collision happened with a quest object
        if (m != null)
        {
            //If AI hit a sheep invoke the sheep hit function
            if (QO != null && m.GetType() == typeof(SheepAI))
            {
                Debug.Log("I HIT A SHEEP");
                HitSheep(QO, m, coll.gameObject, chargeForce * (accelTimer / accelTime), false, this);
                return;
            }
            //If its not a sheep it must be a static questObjective
            else if (m.GetType() == typeof(MeleeAI2))
            {
                Debug.Log("Melee's collided with angle : " + Vector3.Dot(m.gameObject.transform.forward, transform.forward));
                if (m.getState() == State.Charge && Vector3.Dot(m.gameObject.transform.forward, transform.forward) > 0.8)
                {
                    return;
                }

                anim.SetTrigger("HitObject");
                Debug.Log("hit another monster");
                ChargeToMove();
            }
        }
        else if (QO != null)
        {
            anim.SetTrigger("HitObject");
            Debug.Log("Hit quest object");
            QO.takeDamage(2, true, coll.contacts[0].point);
            base.playerAction.ObjectiveAttacked(this);
            ChargeToMove();
        }
        else
        {
            anim.SetTrigger("HitObject");
            Debug.Log("Hit wall");
            agent.velocity = Vector3.zero;
            ChargeToMove();
        }

        MeleeAttack();
    }
示例#14
0
 public void assignQuest(QuestObject qo)
 {
     if (currentQuests.Count >= maxQuests)
     {
         throw new TooManyQuestsException();
     }
     qo.turnsToComplete = qo.maxTurns;
     EventObject.EventGroup eg = new EventObject.EventGroup(qo.OnQuestEnd, qo.maxTurns);
     EventManager.Instance.addTurnEvent(eg);
     currentQuests.Add(qo);
 }
示例#15
0
 private void CreateQuestObjects()
 {
     for (int i = 0; i < QuestObjectCount; i++)
     {
         QuestObject questObject = Instantiate(Prefabs.QuestsObjects[_questObjectPriority[i]].Prefab, new Vector3(Random.Range(-21, 20), 0, Random.Range(-21, 20)), Quaternion.identity);
         questObject.Player          = _player;
         questObject.Text            = UiManager.Text[i];
         questObject.ActivationOrder = i;
         questObject.GameManager     = this;
         _questObjects[i]            = questObject;
     }
 }
 public void EmptyUIQuests()
 {
     foreach (GameObject q in quests)
     {
         QuestObject quest = q.GetComponent <QuestObject>();
         quest.questName        = "";
         quest.description.text = "Completed";
         quest.progress.text    = "-";
         quest.rewards.text     = "-";
         quest.completed.sprite = checkBoxTicked;
     }
     //Debug.Log(quests[2].GetComponent<QuestObject>().description.text);
 }
示例#17
0
    public void AddQuest(float lat, float lon)
    {
        //Create new quest
        Quest newQuest = new Quest();

        newQuest.id     = quests.Count + 1;
        newQuest.portal = "Plasma_02";
        newQuest.pre    = "";
        newQuest.answer = "";
        newQuest.post   = "";
        //Add previous as precedence
        if (quests.Count > 0)
        {
            newQuest.precedences.Add(quests.Count);
        }
        quests.Add(newQuest);

        //Create item in list
        UnityEngine.Object res        = Resources.Load("QuestTemplate");
        GameObject         newElement = (GameObject)GameObject.Instantiate(res);

        newElement.transform.SetParent(questList);
        newElement.transform.localScale = Vector3.one;
        newQuest.questElement           = newElement;

        //Asign OnClick
        Button btn = newElement.GetComponent <Button> ();

        btn.onClick.AddListener(delegate {
            ShowQuestDetails(newQuest.id);
        });

        //Put object on map
        UnityEngine.Object resource  = Resources.Load("MapObject");
        GameObject         mapObject = (GameObject)GameObject.Instantiate(resource);
        SetGeolocation     loc       = mapObject.GetComponent <SetGeolocation> ();

        loc.lat    = lat;
        loc.lon    = lon;
        loc.height = playerLocation.height - 100;
        loc.scaleX = 1f;
        loc.scaleY = 1f;
        loc.scaleZ = 1f;
        GetGeolocation realLoc = mapObject.GetComponent <GetGeolocation> ();

        newQuest.location = realLoc;
        QuestObject script = mapObject.AddComponent <QuestObject> ();

        script.id          = newQuest.id;
        newQuest.mapObject = mapObject;
    }
示例#18
0
    public QuestObject GetInformation(int questid)
    {
        foreach (QuestObject quest in DatabaseQuests)
        {
            if (quest.m_QuestID == questid)
            {
                LastAccessedQuest = questid;
                return(quest);
            }
        }
        QuestObject obj = null;

        return(obj);
    }
示例#19
0
 public bool CheckAvailableQuest(QuestObject npcQuestObject)
 {
     for (int i = 0; i < questList.Count; i++)
     {
         for (int j = 0; j < npcQuestObject.availableQuests.Count; j++)
         {
             if (questList[i].quest.id == npcQuestObject.availableQuests[j].quest.id && questList[i].progress == QuestProgress.AVAILABLE)
             {
                 return(true);
             }
         }
     }
     return(false);
 }
示例#20
0
 public bool CheckAcceptedQuests(QuestObject NPCQuestObject)
 {
     for (int i = 0; i < questList.Count; i++)
     {
         for (int j = 0; j < NPCQuestObject.receivableQuestIDs.Count; j++)
         {
             if (questList[i].id == NPCQuestObject.receivableQuestIDs[j] && questList[i].progress == Quest.QuestProgress.ACCEPTED)
             {
                 return(true);
             }
         }
     }
     return(false);
 }
示例#21
0
 public bool CheckAvailableQuests(QuestObject NPCQuestObject)
 {
     for (int i = 0; i < questList.Count; i++)
     {
         for (int j = 0; j < questList.Count; j++)
         {
             if (questList[i].id == NPCQuestObject.availableQuestIDs[j] && questList[i].progress == Quest.QuestProgress.AVAILABLE)
             {
                 return(true);
             }
         }
     }
     return(false);
 }
 //bool function for checking available quests
 public bool CheckAvailableQ(QuestObject NPC)
 {
     for (int i = 0; i < qList.Count; i++)
     {
         for (int j = 0; j < NPC.availableIDs.Count; j++)
         {
             if (qList[i].Qid == NPC.availableIDs[j] && qList[i].progress == Quest.QProgress.AVAILABLE)
             {
                 return(true);
             }
         }
     }
     return(false);
 }
示例#23
0
 //CALLED FROM QUEST OBJECT (npc character/radio tower)
 public void CheckQuests(QuestObject questObject)
 {
     currentQuestObject = questObject;
     QuestManager.questManager.QuestRequest(questObject);
     if ((questRunning || questAvaliable) && !questPanelActive)
     {
         //Show the quest panel
         ShowQuestPanel();
     }
     else
     {
         Debug.Log("No Quests Avaliable");
     }
 }
 public bool checkForCompletedQuests(QuestObject NPCQuestObject)
 {
     for (int i = 0; i < questList.Count; i++)
     {
         for (int j = 0; j < NPCQuestObject.recievableQuestIDs.Count; j++)
         {
             if (questList[i].id == NPCQuestObject.recievableQuestIDs[j] && questList[i].progress == Quest.QuestProgress.AVALIABLE)
             {
                 return(true);
             }
         }
     }
     return(false);
 }
 //CALLED FROM QUEST OBJECT
 public void CheckQuests(QuestObject questObject)
 {
     currentQuestObject = questObject;
     QuestManager.questManager.QuestRequest(questObject);
     if ((questRunning || questAvailable) && !questPanelActive)
     {
         ShowQuestPanel();
     }
     else
     {
         Debug.Log("No Quest Available");
     }
     //Debug.Log ("hey there"+ number);
 }
示例#26
0
    private void Start()
    {
        nav      = GetComponent <NavMeshAgent>();
        anim     = GetComponent <Animator>();
        questObj = GetComponent <QuestObject>();

        player = PlayerInput.pos;

        attackCounter = attackDelay;

        nav.avoidancePriority = 10;

        StartCoroutine(NavTargetUpdate());
    }
 //bool function for checking ongoing quests
 public bool CheckAcceptedQ(QuestObject NPC)
 {
     for (int i = 0; i < qList.Count; i++)
     {
         for (int j = 0; j < NPC.receivableIDs.Count; j++)
         {
             if (qList[i].Qid == NPC.receivableIDs[j] && qList[i].progress == Quest.QProgress.ONGOING)
             {
                 return(true);
             }
         }
     }
     return(false);
 }
 //bool function for checking completed quests
 public bool CheckCompleteQ(QuestObject NPC)
 {
     for (int i = 0; i < qList.Count; i++)
     {
         for (int j = 0; j < NPC.receivableIDs.Count; j++)
         {
             if (qList[i].Qid == NPC.receivableIDs[j] && qList[i].progress == Quest.QProgress.COMPLETE)
             {
                 return(true);
             }
         }
     }
     return(false);
 }
示例#29
0
    void ProjectileCollision(GameObject collObj, Vector3 pos)
    {
        DestroyTarget();
        setToDestroy = true;

        MonsterAI   m        = collObj.gameObject.GetComponent <MonsterAI>();
        QuestObject questObj = collObj.GetComponent <QuestObject>();

        if (m != null)
        {
            //other monsters
            if (m.GetType() == typeof(SheepAI))
            {
                //let player know objective is attacked
                originMonster.HitSheep(m.GetComponent <QuestObject>(), m, m.gameObject, ExplosionForce, false, originMonster);
                return;
            }
            //other monsters
            else
            {
                m.Hit(1);
                Rigidbody body = collObj.GetComponent <Rigidbody>();
                if (body)
                {
                    body.AddExplosionForce(ExplosionForce, transform.position, ExplosionRadius, 0f);
                }
                originMonster.playerAction.MonsterAttackedMonster(originMonster);
            }
        }

        if (questObj != null)
        {
            Debug.Log("QuestObject hitttiittitiit");
            questObj.takeDamage(3, false, pos);
            //let player know objective is attacked
            originMonster.playerAction.ObjectiveAttacked(originMonster);
        }

        //monster should make daamge not the projectile??
        if (collObj.CompareTag("Player"))
        {
            collObj.GetComponent <PlayerActionController>().PlayerAttacked(originMonster);
            Rigidbody body = collObj.GetComponent <Rigidbody>();
            if (body)
            {
                body.AddExplosionForce(PlayerExplosionForce, transform.position, ExplosionRadius, 0f);
            }
        }
    }
示例#30
0
    public override void Write(object obj, ES2Writer writer)
    {
        QuestObject data = (QuestObject)obj;

        // Add your writer.Write calls here.
        writer.Write(data.questNumber);
        writer.Write(data.Title);
        writer.Write(data.Description);
        writer.Write(data.IsCollection);
        writer.Write(data.IsBoss);
        writer.Write(data.EndInstant);
        writer.Write(data.itemTag);
        writer.Write(data.currentCount);
        writer.Write(data.required);
    }