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); }
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; } } }
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); }