// ----------------------------------------------------------------------------------- // UCE_CanAcceptQuest // ----------------------------------------------------------------------------------- public bool UCE_CanAcceptQuest(UCE_ScriptableQuest quest) { return(UCE_quests.Count(q => !q.completed) < activeQuestLimit && quest.questRequirements.checkRequirements(this) && UCE_CanRestartQuest(quest) ); }
public void Cmd_UCE_CompleteQuest(int npcQuestIndex) { if (state == "IDLE" && isAlive && target != null && target.isAlive && target is Npc && 0 <= npcQuestIndex && npcQuestIndex < ((Npc)target).UCE_quests.Length && Utils.ClosestDistance(collider, target.collider) <= interactionRange) { UCE_ScriptableQuest npcQuest = ((Npc)target).UCE_quests[npcQuestIndex]; int index = UCE_GetQuestIndexByName(npcQuest.name); UCE_FinishQuest(index); } }
public void Cmd_UCE_AcceptQuest(int npcQuestIndex) { if (state == "IDLE" && target != null && isAlive && target.isAlive && target is Npc && 0 <= npcQuestIndex && npcQuestIndex < ((Npc)target).UCE_quests.Length && Utils.ClosestDistance(collider, target.collider) <= interactionRange && UCE_CanAcceptQuest(((Npc)target).UCE_quests[npcQuestIndex])) { int idx = UCE_GetQuestIndexByName(((Npc)target).UCE_quests[npcQuestIndex].name); if (idx == -1) { UCE_ScriptableQuest quest = ((Npc)target).UCE_quests[npcQuestIndex]; UCE_quests.Add(new UCE_Quest(quest)); // -- accept items if (quest.acceptItems != null && quest.acceptItems.Length > 0) { foreach (UCE_rewardItem rewardItem in quest.acceptItems) { InventoryAdd(new Item(rewardItem.item), rewardItem.amount); } } } else { UCE_Quest quest = UCE_quests[idx]; quest.resetQuest(); quest.completedAgain = false; quest.lastCompleted = ""; UCE_quests[idx] = quest; // -- accept items if (quest.acceptItems != null && quest.acceptItems.Length > 0) { foreach (UCE_rewardItem rewardItem in quest.acceptItems) { InventoryAdd(new Item(rewardItem.item), rewardItem.amount); } } } } }
// ------------------------------------------------------------------------------- // UCE_Quest (Constructor) // ------------------------------------------------------------------------------- public UCE_Quest(UCE_ScriptableQuest data) { hash = data.name.GetStableHashCode(); completed = false; completedAgain = false; pvpedTarget = new int[10]; killedTarget = new int[10]; gatheredTarget = new int[10]; harvestedTarget = new int[10]; visitedTarget = new int[10]; craftedTarget = new int[10]; lootedTarget = new int[10]; visitedCount = 0; lastCompleted = ""; counter = 0; _tooltipCache = ""; _tooltipTimer = 0; }
// ----------------------------------------------------------------------------------- // UCE_CanRestartQuest // ----------------------------------------------------------------------------------- public bool UCE_CanRestartQuest(UCE_ScriptableQuest quest) { int idx = UCE_GetQuestIndexByName(quest.name); if (idx == -1) { return(true); } UCE_Quest tmp_quest = UCE_quests[idx]; if (UCE_CanCompleteQuest(quest.name) || UCE_HasActiveQuest(quest.name) || quest.repeatable <= 0 || (quest.repeatable > 0 && tmp_quest.getLastCompleted() < tmp_quest.repeatable && tmp_quest.completedAgain) ) { return(false); } return(true); }