/// <summary> /// Inserts a new quests into the questlist. /// </summary> public static void InsertQuest(uint cid, uint QID) { Character value; if (LifeCycle.TryGetById(cid, out value)) { #region Check Quest QuestBase myquest = null; bool result = false; if (Singleton.Quests.TryFindQuests(QID, out value.client.scenarioquest)) { if (value.client.scenarioquest.OnStart(value.id) > -1) { myquest = value.client.scenarioquest; myquest.QuestId = QID; result = true; } } #endregion Check Quest #region Add to Quest List if (result == false) { return; } SMSG_INITIALIZESCENARIO spkt = new SMSG_INITIALIZESCENARIO(); spkt.StepStatus = 1; spkt.Scenario1 = myquest.QuestId; spkt.Scenario2 = GetCurrentStep(cid, QID); value.client.Send((byte[])spkt); #endregion Add to Quest List #region Check Quest //value.client.scenarioquest.CheckQuest(cid); #endregion Check Quest } }
public static void StartQuest(uint cid, uint questid) { Character value; uint currentScenarioQuest = 0; if (LifeCycle.TryGetById(cid, out value)) { QuestBase scenarioQuest = value.QuestObjectives.Quests[3]; currentScenarioQuest = (scenarioQuest != null) ? scenarioQuest.QuestId : 0; if (currentScenarioQuest != questid) { QuestBase newQuest; if (Singleton.Quests.TryFindScenarioQuest(questid, out newQuest)) { value.QuestObjectives.Quests[3] = newQuest; newQuest.isnew = true; newQuest.OnStart(value.id); uint quest = (value.QuestObjectives.Quests[3] != null) ? value.QuestObjectives.Quests[3].QuestId : 0; bool isnew = (value.QuestObjectives.Quests[3] != null) ? value.QuestObjectives.Quests[3].isnew : false; if (quest > 0 && isnew) { SMSG_INITIALIZESCENARIO spkt = new SMSG_INITIALIZESCENARIO(); spkt.Scenario1 = quest; List <Saga.Quests.Objectives.ObjectiveList.StepInfo> list; if (value.QuestObjectives.ScenarioSteps.TryGetValue(quest, out list)) { if (list.Count > 0) { spkt.Scenario2 = list[0].StepId; spkt.StepStatus = 1; spkt.Enabled = 0; } } spkt.SessionId = value.id; value.client.Send((byte[])spkt); value.QuestObjectives.Quests[3].isnew = true; } newQuest.OnCheckQuest(value.id); } } } }