Exemplo n.º 1
0
    public void AcceptQuestNPC(QuestHolderNPC qHolder)
    {
        GameObject newQobj  = Instantiate(QuestPrefab);
        Quest      newQuest = newQobj.GetComponent <Quest>();

        newQuest.QuestType     = QuestType;
        newQuest.Quota         = Quota;
        newQuest.RewardGoldAmt = RewardGold;
        newQuest.SourceVillage = SourceVillage;

        newQobj.transform.localRotation = new Quaternion(0, 0, 0, 0);
        newQobj.transform.localPosition = new Vector3(0, 0, 0);
        newQobj.transform.localScale    = new Vector3(1, 1, 1);

        newQuest.QuestInit();

        qHolder.AddQuest(newQobj);

        Destroy(gameObject);
    }
Exemplo n.º 2
0
    private void FindNewQuest()
    {
        QuestHolderNPC myQuests = GetComponent <QuestHolderNPC>();

        if (myQuests)
        {
            if (myQuests.QuestsHolder.transform.childCount != 0) // there are quests
            {
                for (int i = 0; i < myQuests.QuestsHolder.transform.childCount; ++i)
                {
                    Transform thisQuest = myQuests.QuestsHolder.transform.GetChild(i);
                    if (thisQuest.GetComponent <NPCQuestWrapper>().QuestObject)
                    {
                        if (thisQuest.GetComponent <NPCQuestWrapper>().QuestObject.GetComponent <Quest>().QuestType != Quest.Type.GatherGold)
                        {
                            StartQuest(myQuests.QuestsHolder.transform.GetChild(i).GetComponent <NPCQuestWrapper>().QuestObject.GetComponent <Quest>());
                            return;
                        }
                    }
                }
            }

            // there were no (valid) quests

            if (!_fullyAutonomousQuesting)
            {
                SetStatus(Status.ReturningHome);
                _currQuestActivity = QuestActivity.needNewTarget;
                _currentQ          = null;
                _attachedNavMeshAgent.isStopped = false;
            }
            else
            {
                _villToGetQuestsFrom = Village.GetClosestVillageTo(transform.position);
                _currQuestSource     = _villToGetQuestsFrom.QuestBoard.GetComponent <QuestSource>();
                SetTarget(_currQuestSource.transform);
                _currQuestActivity = QuestActivity.gettingNewQuest;
            }
        }
    }
Exemplo n.º 3
0
    private void Start()
    {
        if (NPCsGuild)
        {
            GameObject homeLoc = new GameObject("HomeLocation");
            homeLoc.transform.parent   = NPCsGuild.HomeLocations.transform;
            homeLoc.transform.position = NPCsGuild.MemberSpawnPoint.position;
            _homePos = homeLoc.transform;
        }

        _attachedNavMeshAgent = GetComponent <NavMeshAgent>();
        if (_attachedNavMeshAgent)
        {
            _attachedNavMeshAgent.stoppingDistance = 2.0f;
            _attachedNavMeshAgent.autoBraking      = true;
        }

        if (!_camera)
        {
            _camera = Camera.main.gameObject;
        }

        // main menu buttons
        ChangeStatusButton.onClick.AddListener(ChangeStatusButtonClicked);
        ChangeNameButton.onClick.AddListener(ChangeNameButtonClicked);
        QuestsButton.onClick.AddListener(QuestButtonClicked);
        GiveQuestsButton.onClick.AddListener(GiveQuestsButtonClicked);
        InventoryButton.onClick.AddListener(InventoryButtonClicked);
        GearButton.onClick.AddListener(GearButtonClicked);
        SetHomeButton.onClick.AddListener(SetHomeButtonClicked);
        EnemyStrategyButton.onClick.AddListener(EnemyStrategyButtonClicked);
        NewNameInputField.onEndEdit.AddListener(NameChanged);

        // Status menu buttons
        StatusIdleButton.onClick.AddListener(SetStatusIdle);
        StatusFollowButton.onClick.AddListener(SetStatusFollow);
        StatusQuestButton.onClick.AddListener(SetStatusQuest);
        StatusGoHomeButton.onClick.AddListener(SetStatusReturn);
        StatusFindAndDoQuestsButton.onClick.AddListener(SetStatusAutonomousQuests);

        // Strategy Buttons
        StrategyIgnoreButton.onClick.AddListener(StrategyIgnoreButtonClicked);
        StrategyGuardButton.onClick.AddListener(StrategyGuardButtonClicked);
        StrategyAggressiveButton.onClick.AddListener(StrategyAggressiveButtonClicked);
        StrategyDefensiveButton.onClick.AddListener(StrategyDefensiveButtonClicked);

        // set original material
        _originalMaterial = GetComponent <MeshRenderer>().material;

        // interactable
        Interactable interac = GetComponent <Interactable>();

        if (interac)
        {
            interac.OnPlayerInteract.AddListener(HandleOpenInteractMenu);
        }

        // quest recheck
        QuestHolderNPC qHolder = GetComponent <QuestHolderNPC>();

        if (qHolder)
        {
            qHolder.RecheckQuests.AddListener(RecheckQuestsFired);
        }

        // setting some text
        GetComponent <InventoryNPC>().GiveItemsText.text = "Give items to " + NameMesh.text;

        Health myHealth = GetComponent <Health>();

        if (myHealth)
        {
            myHealth.onTakeDamage.AddListener(TookDamageFrom);
            myHealth.onDeath.AddListener(KilledBy);
        }

        _allGuildies.Add(gameObject);
    }