private static void HandleTriggerAndPlaceableQuestLogic(NWPlayer oPC, NWObject oObject) { if (!oPC.IsPlayer) { return; } string questMessage = oObject.GetLocalString("QUEST_MESSAGE"); int questID = oObject.GetLocalInt("QUEST_ID"); int questSequence = oObject.GetLocalInt("QUEST_SEQUENCE"); string visibilityObjectID = oObject.GetLocalString("VISIBILITY_OBJECT_ID"); if (questID <= 0) { oPC.SendMessage("QUEST_ID variable not set on object. Please inform admin this quest is bugged. (QuestID: " + questID + ")"); return; } if (questSequence <= 0) { oPC.SendMessage("QUEST_SEQUENCE variable not set on object. Please inform admin this quest is bugged. (QuestID: " + questID + ")"); return; } PCQuestStatus pcQuestStatus = DataService.SingleOrDefault <PCQuestStatus>(x => x.PlayerID == oPC.GlobalID && x.QuestID == questID); if (pcQuestStatus == null) { return; } QuestState questState = DataService.Get <QuestState>(pcQuestStatus.CurrentQuestStateID); if (questState.Sequence != questSequence || (questState.QuestTypeID != (int)QuestType.UseObject && questState.QuestTypeID != (int)QuestType.ExploreArea)) { return; } if (!string.IsNullOrWhiteSpace(questMessage)) { _.DelayCommand(1.0f, () => { oPC.SendMessage(questMessage); }); } AdvanceQuestState(oPC, oObject, questID); if (!string.IsNullOrWhiteSpace(visibilityObjectID)) { ObjectVisibilityService.AdjustVisibility(oPC, oObject, false); } }
/// <summary> /// Progresses a player to the next state if they meet all requirements to do so. /// </summary> /// <param name="player">The player object</param> /// <param name="trigger">The trigger or placeable being used/entered.</param> private static void HandleTriggerAndPlaceableQuestLogic(NWPlayer player, NWObject trigger) { if (!player.IsPlayer) { return; } string questMessage = trigger.GetLocalString("QUEST_MESSAGE"); int questID = trigger.GetLocalInt("QUEST_ID"); int questState = trigger.GetLocalInt("QUEST_STATE"); string visibilityObjectID = trigger.GetLocalString("VISIBILITY_OBJECT_ID"); if (questID <= 0) { player.SendMessage("QUEST_ID variable not set on object. Please inform admin this quest is bugged. (QuestID: " + questID + ")"); return; } if (questState <= 0) { player.SendMessage("QUEST_STATE variable not set on object. Please inform admin this quest is bugged. (QuestID: " + questID + ")"); return; } PCQuestStatus pcQuestStatus = DataService.PCQuestStatus.GetByPlayerAndQuestIDOrDefault(player.GlobalID, questID); if (pcQuestStatus == null) { return; } if (pcQuestStatus.QuestState != questState) { return; } if (!string.IsNullOrWhiteSpace(questMessage)) { DelayCommand(1.0f, () => { player.SendMessage(questMessage); }); } var quest = GetQuestByID(questID); quest.Advance(player, trigger); if (!string.IsNullOrWhiteSpace(visibilityObjectID)) { ObjectVisibilityService.AdjustVisibility(player, trigger, false); } }