public void CheckAllActiveObjectives(RelevantPosition rp = null) { foreach (Quest q in questList) { if (q.questStatus != QuestStatus.Completed && q.questStatus != QuestStatus.Failed) { int objectives = q.questObjectives.Length; int completedObjectives = 0; foreach (QuestObjective o in q.questObjectives) { o.CheckObjectiveCompleted(rp); if (o.objectiveStatus == ObjectiveStatus.Completed) { completedObjectives++; } } if (objectives == completedObjectives) { q.questStatus = QuestStatus.Successful; if (q.returnToGiver == false) { if (rp != null) { rp.busyFirstThing = true; } q.questGiver.CompletedQuest(q, q.questGiver, null); q.questStatus = QuestStatus.Completed; q.questGiver.InteractWithQuestGiver("questgiver", null, rp); InsertQuestCompleted(q); } } } } }
private void CheckMoveCompleted(RelevantPosition rp = null) { if (positionToMove == rp) { objectiveStatus = ObjectiveStatus.Completed; } else { objectiveStatus = ObjectiveStatus.Pending; } }
public void CheckObjectiveCompleted(RelevantPosition rp = null) { switch (objectiveType) { case ObjectiveType.Gather: CheckGatherCompleted(); break; case ObjectiveType.Defeat: CheckDefeatCompleted(); break; case ObjectiveType.Move: CheckMoveCompleted(rp); break; } }
public void InteractWithQuestGiver(string npc, NpcAI ai, RelevantPosition rp = null) { relevantPosition = rp; npcAI = ai; switch (quest.questStatus) { case QuestStatus.Closed: //als de quest closed is, niks tonen. de quest is niet beschikbaar. break; case QuestStatus.Open: QuestOpen(npc); break; case QuestStatus.Pending: QuestPending(npc); break; case QuestStatus.Active: QuestActive(npc); break; case QuestStatus.Successful: if (quest.returnToGiver) { QuestSuccessful(npc); } else { QuestCompleted(npc); } break; case QuestStatus.Failed: QuestFailed(npc); break; case QuestStatus.Completed: QuestCompleted(npc); break; } }