void CheckQuestState() { if (currentQuestContinues == false && clickedOnNPC == false && questWeAreOn.isQuestAccepted == false && questWeAreOn.isNeedsSatisfied == false && questWeAreOn.isFinished == false && allQuestsFinished == false) // Quest not taken yet. { currentState = QuestStates.questNotTaken; } else if (currentQuestContinues == false && clickedOnNPC == true && questWeAreOn.isQuestAccepted == false && questWeAreOn.isNeedsSatisfied == false && questWeAreOn.isFinished == false && allQuestsFinished == false) // Quest not taken, yet clicked. { currentState = QuestStates.questOffering; } else if (currentQuestContinues == true && questWeAreOn.isQuestAccepted == true && questWeAreOn.isNeedsSatisfied == false && questWeAreOn.isFinished == false && allQuestsFinished == false) // Quest is taken but needs are not satisfied, and not ready to turn in. { currentState = QuestStates.questTakenButNotSatisfied; } else if (currentQuestContinues == true && questWeAreOn.isQuestAccepted == true && questWeAreOn.isNeedsSatisfied == true && questWeAreOn.isFinished == false && allQuestsFinished == false) // Quests needs are satisfied, but not turned in yet. { currentState = QuestStates.questTakenAndSatisfied; } else if (currentQuestContinues == false && questWeAreOn.isQuestAccepted == true && questWeAreOn.isNeedsSatisfied == true && questWeAreOn.isFinished == true && allQuestsFinished == false) // Quests needs are satisfied, and turned in. { currentState = QuestStates.questTurnedIn; } else if (allQuestsFinished == true) // All quests given are finished. { currentState = QuestStates.questsAreFinished; } }
void CheckQuestState() { if(currentQuestContinues == false && clickedOnNPC == false && questWeAreOn.isQuestAccepted == false && questWeAreOn.isNeedsSatisfied == false && questWeAreOn.isFinished == false && allQuestsFinished == false) // Quest not taken yet. { currentState = QuestStates.questNotTaken; } else if(currentQuestContinues == false && clickedOnNPC == true && questWeAreOn.isQuestAccepted == false && questWeAreOn.isNeedsSatisfied == false && questWeAreOn.isFinished == false && allQuestsFinished == false) // Quest not taken, yet clicked. { currentState = QuestStates.questOffering; } else if (currentQuestContinues == true && questWeAreOn.isQuestAccepted == true && questWeAreOn.isNeedsSatisfied == false && questWeAreOn.isFinished == false && allQuestsFinished == false) // Quest is taken but needs are not satisfied, and not ready to turn in. { currentState = QuestStates.questTakenButNotSatisfied; } else if (currentQuestContinues == true && questWeAreOn.isQuestAccepted == true && questWeAreOn.isNeedsSatisfied == true && questWeAreOn.isFinished == false && allQuestsFinished == false) // Quests needs are satisfied, but not turned in yet. { currentState = QuestStates.questTakenAndSatisfied; } else if(currentQuestContinues == false && questWeAreOn.isQuestAccepted == true && questWeAreOn.isNeedsSatisfied == true && questWeAreOn.isFinished == true && allQuestsFinished == false) // Quests needs are satisfied, and turned in. { currentState = QuestStates.questTurnedIn; } else if(allQuestsFinished == true) // All quests given are finished. { currentState = QuestStates.questsAreFinished; } }
public AbstractQuestState(Quest quest, string lfs, QuestStates start_state, QuestStates end_state) { this.q = quest; this.lfs = lfs; _start_state = start_state; _end_state = end_state; }
public static QuestChangeResponse SetProgress(QuestObjectives objectives, OfflineDatabase offlineDatabase, IOfflineDefinitionLoader offlineDefinitions) { QuestStates.QuestState questState = null; QuestStates questStates = offlineDatabase.Read <QuestStates>(); QuestChangeResponse questChangeResponse = new QuestChangeResponse(); foreach (QuestStates.QuestState quest in questStates.Quests) { if (quest.status == QuestStatus.ACTIVE) { questState = quest; break; } } if (questState == null) { return(questChangeResponse); } if (questState.completedObjectives == null) { questState.completedObjectives = new QuestObjectives(); } Reward reward = null; if (questState.timesCompleted == 0) { Dictionary <string, Reward> objectiveRewards = offlineDefinitions.QuestRewards(questState.questId).ObjectiveRewards; foreach (string objective in objectives) { if (!questState.completedObjectives.Contains(objective) && objectiveRewards.ContainsKey(objective)) { if (reward == null) { reward = new Reward(); } reward.AddReward(objectiveRewards[objective]); } } } if (reward != null) { offlineDefinitions.AddReward(reward, questChangeResponse); } questState.completedObjectives = objectives; offlineDatabase.Write(questStates); questChangeResponse.questId = questState.questId; questChangeResponse.questStateCollection = new SignedResponse <QuestStateCollection> { Data = GetQuestStateCollection(questStates, offlineDefinitions, includeComplete: false) }; if (reward != null) { JsonService jsonService = Service.Get <JsonService>(); questChangeResponse.reward = jsonService.Deserialize <RewardJsonReader>(jsonService.Serialize(RewardJsonWritter.FromReward(reward))); } return(questChangeResponse); }
/// <summary> /// Tries to start the quest of the given group and number for the specified player. /// </summary> /// <param name="player">The player.</param> /// <param name="group">The group.</param> /// <param name="number">The number.</param> public void StartQuest(Player player, short group, short number) { using var loggerScope = player.Logger.BeginScope(this.GetType()); var quest = player.GetQuest(group, number); if (quest is null) { player.Logger.LogWarning("Failed, quest not found"); return; } if (quest.MinimumCharacterLevel > player.Level || (quest.MaximumCharacterLevel > 0 && quest.MaximumCharacterLevel < player.Level)) { player.Logger.LogDebug("Failed, character level {0} not in allowed range {1} to {2}.", player.Level, quest.MinimumCharacterLevel, quest.MaximumCharacterLevel); return; } var questState = player.SelectedCharacter !.QuestStates.FirstOrDefault(q => q.Group == group); if (questState is null) { questState = player.PersistenceContext.CreateNew <CharacterQuestState>(); questState.Group = group; player.SelectedCharacter.QuestStates.Add(questState); } if (questState.ActiveQuest != null) { player.Logger.LogDebug("There is already an active quest of this group."); player.ViewPlugIns.GetPlugIn <IQuestProgressPlugIn>()?.ShowQuestProgress(questState.ActiveQuest, false); return; } if (questState.LastFinishedQuest == quest && !quest.Repeatable) { player.Logger.LogDebug("The quest is not repeatable."); return; } if (quest.RequiredStartMoney > 0) { if (player.TryRemoveMoney(quest.RequiredStartMoney)) { player.ViewPlugIns.GetPlugIn <IUpdateMoneyPlugIn>()?.UpdateMoney(); } else { player.ViewPlugIns.GetPlugIn <IShowMessagePlugIn>()?.ShowMessage("Not enough money to proceed", MessageType.BlueNormal); return; } } questState.Clear(player.PersistenceContext); questState.ActiveQuest = quest; player.ViewPlugIns.GetPlugIn <IQuestStartedPlugIn>()?.QuestStarted(quest); }
void FastShipStateUpdate() { titleText.text = "Fast and agile ship with lower defences but greater speed."; actionText.text = "1 - Confirm ship " + ShipSelected + ".\n2-Back to hangar."; ShipSelected = QuestStates.FastShip; StateChangeChoices = new QuestStates[] { QuestStates.ShipConfirmScreen, QuestStates.Hangar, }; ChoicesSelect(); }
public QuestReq(int npc_id, string action_name, string npc_dest_text, string quest_status, string proc_name, int choice, QuestStates final_state) { NpcId = npc_id; ActionName = action_name; NpcDestText = npc_dest_text; QuestStatus = quest_status; ProcName = proc_name; Choice = choice; FinalState = final_state; }
void ArmoredShipStateUpdate() { ShipSelected = QuestStates.FastShip; titleText.text = "High armored but slow ship. Better not pick this one, unless fighting lots of enemies."; actionText.text = "1 - Confirm ship " + ShipSelected + ".\n2-Back to hangar."; StateChangeChoices = new QuestStates[] { QuestStates.ShipConfirmScreen, QuestStates.Hangar, }; ChoicesSelect(); }
void NormalShipStateUpdate() { titleText.text = "Normal Ship with normal stats."; actionText.text = "1 - Confirm ship " + ShipSelected + ".\n2-Back to hangar."; ShipSelected = QuestStates.NormalShip; StateChangeChoices = new QuestStates[] { QuestStates.ShipConfirmScreen, QuestStates.Hangar, }; ChoicesSelect(); }
public IQuest AddObjective(int state, IQuestObjective objective) { if (!QuestStates.ContainsKey(state - 1)) { QuestStates[state - 1] = new QuestState(); } var questState = QuestStates[state - 1]; questState.AddObjective(objective); return(this); }
void HangarStateUpdate() { ShipSelected = QuestStates.Hangar; titleText.text = "You see 3 ships in the hangar."; actionText.text = "1 - Approach Normal ship.\n2 - Approach Fast ship.\n3 - Approach Armored ship.\n4 - Back to Briefing room."; StateChangeChoices = new QuestStates[] { QuestStates.NormalShip, QuestStates.FastShip, QuestStates.ArmoredShip, QuestStates.BriefingRoom, }; ChoicesSelect(); }
protected override void PerformOfflineAction(OfflineDatabase offlineDatabase, IOfflineDefinitionLoader offlineDefinitions) { QuestStates questStates = offlineDatabase.Read <QuestStates>(); for (int i = 0; i < questStates.Quests.Count; i++) { if (questStates.Quests[i].questId == QuestId) { questStates.Quests.RemoveAt(i); break; } } offlineDatabase.Write(questStates); ResponseBody = new SignedResponse <QuestStateCollection> { Data = SetProgressOperation.GetQuestStateCollection(questStates, offlineDefinitions, includeComplete: false) }; }
public static QuestStateCollection GetQuestStateCollection(QuestStates states, IOfflineDefinitionLoader offlineDefinitions, bool includeComplete) { QuestStateCollection questStateCollection = new QuestStateCollection(); QuestStateCollection questStateCollection2 = new QuestStateCollection(); foreach (QuestStates.QuestState quest in states.Quests) { questStateCollection2.Add(quest); if (includeComplete || quest.status != QuestStatus.COMPLETED) { questStateCollection.Add(quest); } } foreach (QuestState item in offlineDefinitions.AvailableQuests(questStateCollection2)) { questStateCollection.Add(item); } return(questStateCollection); }
public static void SetOfflineQuestStateCollection(OfflineDatabase offlineDatabase, QuestStateCollection quests) { QuestStates value = offlineDatabase.Read <QuestStates>(); foreach (QuestState quest in quests) { bool flag = false; foreach (QuestStates.QuestState quest2 in value.Quests) { if (quest2.questId == quest.questId) { quest2.completedObjectives = quest.completedObjectives; quest2.unlockTime = quest.unlockTime; quest2.status = quest.status; quest2.timesCompleted = quest.timesCompleted; flag = true; break; } } if (!flag) { QuestStates.QuestState questState = new QuestStates.QuestState(); questState.questId = quest.questId; questState.completedObjectives = quest.completedObjectives; questState.timesCompleted = quest.timesCompleted; questState.status = quest.status; questState.unlockTime = quest.unlockTime; QuestStates.QuestState current2 = questState; if (current2.status == QuestStatus.COMPLETED) { current2.completedTime = DateTime.UtcNow; } value.Quests.Add(current2); } } offlineDatabase.Write(value); }
private void SetQuestState(List <QuestParam> referenceQuestList, QuestParam questParam, QuestStates state, bool cond_recursive) { if (questParam == null) { return; } questParam.state = state; if (!cond_recursive || questParam.cond_quests == null) { return; } foreach (string condQuest in questParam.cond_quests) { string iname = condQuest; QuestParam questParam1 = referenceQuestList.Find((Predicate <QuestParam>)(q => q.iname == iname)); this.SetQuestState(referenceQuestList, questParam1, state, cond_recursive); } }
public static QuestChangeResponse SetStatus(QuestStatus status, string questId, OfflineDatabase offlineDatabase, IOfflineDefinitionLoader offlineDefinitions) { QuestChangeResponse questChangeResponse = new QuestChangeResponse(); QuestStates questStates = offlineDatabase.Read <QuestStates>(); QuestStates.QuestState questState = null; int num = -1; for (int i = 0; i < questStates.Quests.Count; i++) { if (questStates.Quests[i].questId == questId) { questState = questStates.Quests[i]; num = i; break; } } QuestRewardsCollection questRewardsCollection = offlineDefinitions.QuestRewards(questId); Reward reward = null; if (questState == null) { reward = questRewardsCollection.StartReward; if (reward != null) { if (reward.isEmpty()) { reward = null; } else { offlineDefinitions.AddReward(reward, questChangeResponse); } } questState = new QuestStates.QuestState(); questState.questId = questId; } if (status == QuestStatus.ACTIVE) { for (int i = 0; i < questStates.Quests.Count; i++) { if (questStates.Quests[i].status == QuestStatus.ACTIVE) { questStates.Quests[i].status = QuestStatus.SUSPENDED; } } if (questState.status == QuestStatus.COMPLETED) { questState.completedObjectives.Clear(); } } if (status == QuestStatus.COMPLETED) { int timesCompleted = questState.timesCompleted; if (timesCompleted == 0) { questState.completedTime = DateTime.UtcNow; reward = questRewardsCollection.CompleteReward; if (reward != null) { if (reward.isEmpty()) { reward = null; } else { offlineDefinitions.AddReward(reward, questChangeResponse); } } } questState.timesCompleted = timesCompleted + 1; } questState.status = status; if (num >= 0) { questStates.Quests[num] = questState; } else { questStates.Quests.Add(questState); } offlineDatabase.Write(questStates); JsonService jsonService = Service.Get <JsonService>(); if (reward != null) { questChangeResponse.reward = jsonService.Deserialize <RewardJsonReader>(jsonService.Serialize(RewardJsonWritter.FromReward(reward))); } questChangeResponse.questId = questId; questChangeResponse.questStateCollection = new SignedResponse <QuestStateCollection> { Data = SetProgressOperation.GetQuestStateCollection(questStates, offlineDefinitions, includeComplete: false) }; return(questChangeResponse); }
public IEnumerable <IQuestState> GetStates() { return(QuestStates.OrderBy(o => o.Key).Select(x => x.Value)); }
// Use this for initialization void Start() { currentState = QuestStates.Intro; // print (currentState); }
void ChangeState(QuestStates State) { currentState = State; print("State changed to: " + State); StateChangeChoices = null; }
public QuestReq(int npc_id, string action_name, string npc_dest_text, string quest_status, string proc_name, QuestStates final_state) : this(npc_id, action_name, npc_dest_text, quest_status, proc_name, 0, final_state) { }
private void SetQuestState(List <QuestParam> referenceQuestList, QuestParam questParam, QuestStates state, bool cond_recursive) { if (questParam == null) { return; } questParam.state = state; if (!cond_recursive || questParam.cond_quests == null) { return; } // ISSUE: object of a compiler-generated type is created // ISSUE: variable of a compiler-generated type TowerResuponse.\u003CSetQuestState\u003Ec__AnonStorey2D1 stateCAnonStorey2D1 = new TowerResuponse.\u003CSetQuestState\u003Ec__AnonStorey2D1(); foreach (string condQuest in questParam.cond_quests) { // ISSUE: reference to a compiler-generated field stateCAnonStorey2D1.iname = condQuest; // ISSUE: reference to a compiler-generated method QuestParam questParam1 = referenceQuestList.Find(new Predicate <QuestParam>(stateCAnonStorey2D1.\u003C\u003Em__2B9)); this.SetQuestState(referenceQuestList, questParam1, state, cond_recursive); } }