Example #1
0
 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;
     }
 }
Example #2
0
 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;
     }
 }
Example #3
0
        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);
        }
Example #5
0
        /// <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);
        }
Example #6
0
 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();
 }
Example #7
0
 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;
 }
Example #8
0
 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;
 }
Example #9
0
 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();
 }
Example #10
0
 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();
 }
Example #11
0
        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);
        }
Example #12
0
 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();
 }
Example #13
0
    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);
        }
Example #16
0
 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);
        }
Example #18
0
 public IEnumerable <IQuestState> GetStates()
 {
     return(QuestStates.OrderBy(o => o.Key).Select(x => x.Value));
 }
Example #19
0
    // Use this for initialization
    void Start()
    {
        currentState = QuestStates.Intro;
//		print (currentState);
    }
Example #20
0
 void ChangeState(QuestStates State)
 {
     currentState = State;
     print("State changed to: " + State);
     StateChangeChoices = null;
 }
Example #21
0
 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)
 {
 }
Example #22
0
 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)
 {
 }
Example #23
0
 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);
     }
 }