Exemple #1
0
    public void UpdateQuestUI()
    {
        ResetQuestDisplay();

        for (int i = 0; i < m_Player.QuestList.Count; ++i)
        {
            QuestBase quest = m_Player.QuestList[i];



            btnlist[i].transform.GetChild(0).GetComponent <Text>().text = quest.QuestString;
            btnlist[i].transform.GetChild(1).GetComponent <Text>().text = quest.QuestReward + " " + quest.QuestRewardType;


            btnlist[i].GetComponent <Button>().onClick.RemoveAllListeners();
            btnlist[i].GetComponent <Button>().onClick.AddListener(delegate { CompleteQuest(quest); });

            if (m_Player.QuestList[i].QuestComplete)
            {
                btnlist[i].GetComponent <Image>().color = Color.green;
            }
            else
            {
                btnlist[i].GetComponent <Image>().color = Color.red;
            }
        }
    }
        public static bool MeetsCondition(
            SelfSwitchCondition condition,
            Player player,
            Event eventInstance,
            QuestBase questBase
            )
        {
            if (eventInstance != null)
            {
                if (eventInstance.Global)
                {
                    var evts = MapInstance.Get(eventInstance.MapId).GlobalEventInstances.Values.ToList();
                    for (var i = 0; i < evts.Count; i++)
                    {
                        if (evts[i] != null && evts[i].BaseEvent == eventInstance.BaseEvent)
                        {
                            return(evts[i].SelfSwitch[condition.SwitchIndex] == condition.Value);
                        }
                    }
                }
                else
                {
                    return(eventInstance.SelfSwitch[condition.SwitchIndex] == condition.Value);
                }
            }

            return(false);
        }
        /// <summary>
        /// Occurs after a client displays a personal quest confirmation.
        /// </summary>
        /// <param name="cpkt"></param>
        private void CM_PERSONALREQUESTCONFIRMATION(CMSG_PERSONALREQUEST cpkt)
        {
            BaseNPC npc = this.character.Target as BaseNPC;

            if (npc != null)
            {
                if (cpkt.Result == 2 && pendingquest != null)
                {
                    pendingquest.OnStart(this.character.id);
                    pendingquest.CheckQuest(this.character);
                    QuestBase.UserTalktoTarget(this.character.Target.ModelId, this.character, pendingquest);
                    CommonFunctions.RefreshPersonalRequests(this.character);
                    CommonFunctions.UpdateNpcIcons(this.character);
                    pendingquest = null;

                    Common.Actions.OpenMenu(
                        this.character, npc,
                        cpkt.Unknown,
                        DialogType.AcceptPersonalRequest,
                        new byte[] { }
                        );
                }
                else
                {
                    pendingquest = null;

                    Common.Actions.OpenMenu(
                        this.character, npc,
                        cpkt.Unknown,
                        DialogType.AcceptPersonalRequest,
                        npc.GetDialogButtons(this.character)
                        );
                }
            }
        }
    public void InitializeQuestTable(ApplicationModel applicationModelInstance_)
    {
        /* Create Main Quests */
        QuestKill _mainQuestOne = new QuestKill();
        _mainQuestOne.ConstructQuest();
        _mainQuestOne.Title = "Primeira Quest";
        _mainQuestOne.Description = "Primeira quest de todas as quests do jogo";
        _mainQuestOne.QuestActionType = QuestActionTypeEnum.KILL;
        _mainQuestOne.QuestType = QuestTypeEnum.MAIN;
        _mainQuestOne.Active = true;
        _mainQuestOne.TargetAmount = 3;
        _mainQuestOne.CurrentAmount = 0;
        //_mainQuestOne.TargetID = EnemyTable.GetMainQuestOneEnemyId;

        QuestBase _mainQuestTwo = new QuestBase();
        _mainQuestOne.QuestChild = _mainQuestTwo;
        _mainQuestTwo.QuestFather = _mainQuestOne;
        _mainQuestTwo.Title = "Segunda Quest";
        _mainQuestTwo.Description = "Segunda quest de todas as quests principais do Jogo";
        _mainQuestTwo.QuestType = QuestTypeEnum.MAIN;
        _mainQuestTwo.QuestActionType = QuestActionTypeEnum.DELIVER;

        QuestBase _mainQuestThre = new QuestBase();
        _mainQuestTwo.QuestChild = _mainQuestThre;
        _mainQuestThre.QuestFather = _mainQuestTwo;
    }
        private void ActionCreator(GameStatus status, NPCDict npc = null, QuestBase quest = null)
        {
            Status = status;
            _actionDict.Clear();
            switch (status)
            {
            case GameStatus.Location:
                ActionCreatorForLocation(Player.Location);
                break;

            case GameStatus.NPC:
                ActionCreatorForNPC(npc);
                break;

            case GameStatus.Inventory:
                ActionCreatorForBackLocation();
                break;

            case GameStatus.Quest:
                ActionCreatorForQuest(quest);
                break;

            case GameStatus.LookLocation:
                LocationDict loc = Player.Location;
                Console.WriteLine($"{loc.LocName} ({loc.Id})");
                Console.WriteLine($"Описание: {loc.LocDescription}");
                ActionCreatorForBackLocation();
                break;
            }

            string str = Console.ReadLine();

            ApplayAction(str);
        }
        public void Update(QuestBase quest)
        {
            if (quest == null)
            {
                Hide();
            }
            else
            {
                Show();
                mQuestTitle.Text = quest.Name;
                if (mQuestOfferText != quest.StartDescription)
                {
                    mQuestPromptLabel.ClearText();
                    mQuestPromptLabel.Width = mQuestPromptArea.Width - mQuestPromptArea.GetVerticalScrollBar().Width;
                    mQuestPromptLabel.AddText(
                        quest.StartDescription, mQuestPromptTemplate.TextColor,
                        mQuestPromptTemplate.CurAlignments.Count > 0
                            ? mQuestPromptTemplate.CurAlignments[0]
                            : Alignments.Left, mQuestPromptTemplate.Font
                        );

                    mQuestPromptLabel.SizeToChildren(false, true);
                    mQuestOfferText = quest.StartDescription;
                }
            }
        }
Exemple #7
0
 public void setRank(int r)
 {
     if (r > 0)
     {
         myQuests = new QuestBase();
     }
 }
Exemple #8
0
    private void Start()
    {
        //QBQuest.Instance.UpdateQuest(QBQuest.Instance.firstQuest,QuestType.REACH,QuestTarget.NONE);
        QBQuest.Instance.QuestList.Clear();
        btnlist = new List <Button>();
        for (int i = 0; i < 3; ++i)
        {
            QuestBase newquest = QBQuest.Instance.RandomizeQuest();
            QBQuest.Instance.QuestList.Add(newquest);

            Button newbtn = Instantiate(btnPrefab, QuestBoardCanvas.transform);
            newbtn.GetComponent <RectTransform>().anchoredPosition = new Vector3(startPos, 0, 0);
            btnlist.Add(newbtn);

            btnlist[i].onClick.RemoveAllListeners();
            btnlist[i].onClick.AddListener(delegate { AddQuestToPlayer(newquest); });

            startPos += 200;
        }


        PostOffice.Instance.Send("Player", new Message(MESSAGE_TYPE.QUEST, QuestType.REACH.ToString(), QuestTarget.NONE.ToString()));
        UpdateQuestBoardUI();
        QuestBoardCanvas.gameObject.SetActive(false);
    }
        public static bool MeetsCondition(
            NoNpcsOnMapCondition condition,
            Player player,
            Event eventInstance,
            QuestBase questBase
            )
        {
            var map = MapInstance.Get(eventInstance?.MapId ?? Guid.Empty);

            if (map == null)
            {
                map = MapInstance.Get(player.MapId);
            }

            if (map != null)
            {
                var entities = map.GetEntities();
                foreach (var en in entities)
                {
                    if (en.GetType() == typeof(Npc))
                    {
                        return(false);
                    }
                }

                return(true);
            }

            return(false);
        }
Exemple #10
0
        public static string CompleteQuest(List <string> strings)
        {
            if (Campaign.Current == null)
            {
                return("Campaign was not started.");
            }
            if (CampaignCheats.CheckParameters(strings, 0) || CampaignCheats.CheckHelp(strings))
            {
                return("Format is \"campaign.complete_active_quest [QuestName]\".");
            }
            string questName = string.Join(" ", strings.ToArray()).Trim(new char[]
            {
                '"'
            });
            QuestBase questBase = Campaign.Current.QuestManager.Quests.FirstOrDefault((QuestBase q) => q.Title.ToString().ToLower().Contains(questName.ToLower()));

            if (questBase == null)
            {
                return("Failed to find active quest with name \"" + questName + "\"");
            }
            MethodInfo method = questBase.GetType().GetMethod("CompleteQuestWithSuccess", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);

            if (method == null)
            {
                return("Failed to locate method.");
            }
            method.Invoke(questBase, null);
            return(string.Format("{0} has been completed.", questBase.Title));
        }
Exemple #11
0
      private static void CSOnStoryModeEnded()
      {
          if (CSCharCreationOption.CSGameOption == 2)
          {
              //Skip  to create new quests

              Type InitRebuildClan = typeof(RebuildPlayerClanQuestBehavior).Assembly.GetType("StoryMode.Behaviors.Quests.FirstPhase.RebuildPlayerClanQuestBehavior+RebuildPlayerClanQuest");

              if (InitRebuildClan != null)
              {
                  QuestBase ActRebuildClan = (QuestBase)Activator.CreateInstance(InitRebuildClan, new object[] { Hero.MainHero });
                  ActRebuildClan.StartQuest();

                  foreach (MobileParty tracked in MobileParty.All)
                  {
                      Campaign.Current.VisualTrackerManager.RemoveTrackedObject(tracked);
                  }
              }
          }
          else
          {
              MbEvent mbEvent = (MbEvent)Traverse.Create(StoryModeEvents.Instance).Field("_onStoryModeTutorialEndedEvent").GetValue();
              mbEvent.Invoke();
          }
      }
Exemple #12
0
        private void SetupFormValues(QuestInProgressCondition condition)
        {
            cmbQuestInProgress.SelectedIndex = QuestBase.ListIndex(condition.QuestId);
            cmbTaskModifier.SelectedIndex    = (int)condition.Progress;
            if (cmbTaskModifier.SelectedIndex == -1)
            {
                cmbTaskModifier.SelectedIndex = 0;
            }

            if (cmbTaskModifier.SelectedIndex != 0)
            {
                //Get Quest Task Here
                var quest = QuestBase.Get(QuestBase.IdFromList(cmbQuestInProgress.SelectedIndex));
                if (quest != null)
                {
                    for (var i = 0; i < quest.Tasks.Count; i++)
                    {
                        if (quest.Tasks[i].Id == condition.TaskId)
                        {
                            cmbQuestTask.SelectedIndex = i;
                        }
                    }
                }
            }
        }
 private void OnQuestStarted(QuestBase quest)
 {
     // defer our updates until some time has passed, because they depend on whether
     // FirstPhase or SecondPhase is active, and story Phase information is only
     // updated after all OnQuestStarted handlers have fired.
     new NextHourlyTickListener(new Action <QuestBase>(SetStoryVisibleTimeoutIfNeeded), quest);
 }
Exemple #14
0
        private void btnCancel_Click(object sender, EventArgs e)
        {
            foreach (var item in mChanged)
            {
                if (item == null)
                {
                    Log.Warn($"Unexpected null: {nameof(FrmQuest)}.{nameof(btnCancel_Click)}() {nameof(item)}");
                }
                else
                {
                    if (item.StartEvent == null)
                    {
                        Log.Warn($"Unexpected null: {nameof(FrmQuest)}.{nameof(btnCancel_Click)}() {nameof(item)}.{nameof(item.StartEvent)}");
                    }

                    if (item.EndEvent == null)
                    {
                        Log.Warn($"Unexpected null: {nameof(FrmQuest)}.{nameof(btnCancel_Click)}() {nameof(item)}.{nameof(item.EndEvent)}");
                    }
                }

                item?.StartEvent?.RestoreBackup();
                item?.StartEvent?.DeleteBackup();
                item?.EndEvent?.RestoreBackup();
                item?.EndEvent?.DeleteBackup();
                item?.RestoreBackup();
                item?.DeleteBackup();
            }

            mEditorItem = null;
            Hide();
            Globals.CurrentEditor = -1;
            Dispose();
        }
        public static bool MeetsCondition(
            SelfSwitchCondition condition,
            Player player,
            Event eventInstance,
            QuestBase questBase
            )
        {
            if (eventInstance != null)
            {
                if (eventInstance.Global)
                {
                    if (MapInstance.Get(eventInstance.MapId).GlobalEventInstances.TryGetValue(eventInstance.BaseEvent, out Event evt))
                    {
                        if (evt != null)
                        {
                            return(evt.SelfSwitch[condition.SwitchIndex] == condition.Value);
                        }
                    }
                }
                else
                {
                    return(eventInstance.SelfSwitch[condition.SwitchIndex] == condition.Value);
                }
            }

            return(false);
        }
        public static bool MeetsCondition(
            HasItemCondition condition,
            Player player,
            Event eventInstance,
            QuestBase questBase
            )
        {
            var quantity = condition.Quantity;

            if (condition.UseVariable)
            {
                switch (condition.VariableType)
                {
                case VariableTypes.PlayerVariable:
                    quantity = (int)player.GetVariableValue(condition.VariableId).Integer;

                    break;

                case VariableTypes.ServerVariable:
                    quantity = (int)ServerVariableBase.Get(condition.VariableId)?.Value.Integer;
                    break;
                }
            }

            if ((!condition.Negated && player.CountItems(condition.ItemId) >= quantity) || (condition.Negated && player.CountItems(condition.ItemId) < quantity))
            {
                return(true);
            }

            return(false);
        }
        public static bool MeetsCondition(
            VariableIsCondition condition,
            Player player,
            Event eventInstance,
            QuestBase questBase
            )
        {
            VariableValue value = null;

            if (condition.VariableType == VariableTypes.PlayerVariable)
            {
                value = player.GetVariableValue(condition.VariableId);
            }
            else if (condition.VariableType == VariableTypes.ServerVariable)
            {
                value = ServerVariableBase.Get(condition.VariableId)?.Value;
            }

            if (value == null)
            {
                value = new VariableValue();
            }

            return(CheckVariableComparison(value, condition.Comparison, player, eventInstance));
        }
        public static bool MeetsCondition(
            HasFreeInventorySlots condition,
            Player player,
            Event eventInstance,
            QuestBase questBase
            )
        {
            var quantity = condition.Quantity;

            if (condition.UseVariable)
            {
                switch (condition.VariableType)
                {
                case VariableTypes.PlayerVariable:
                    quantity = (int)player.GetVariableValue(condition.VariableId).Integer;

                    break;

                case VariableTypes.ServerVariable:
                    quantity = (int)ServerVariableBase.Get(condition.VariableId)?.Value.Integer;
                    break;
                }
            }

            // Check if the user has (or does not have when negated) the desired amount of inventory slots.
            var slots = player.FindOpenInventorySlots().Count;

            if ((!condition.Negated && slots >= quantity) || (condition.Negated && slots < quantity))
            {
                return(true);
            }

            return(false);
        }
Exemple #19
0
        public static void CompleteQuest(uint cid, uint questid)
        {
            Character value;

            if (LifeCycle.TryGetById(cid, out value))
            {
                QuestBase scenarioQuest = value.QuestObjectives.Quests[3];
                if (scenarioQuest != null &&
                    scenarioQuest.QuestId == questid)
                {
                    Predicate <Saga.Quests.Objectives.ObjectiveList.Position> FindPosition = delegate(Saga.Quests.Objectives.ObjectiveList.Position point)
                    {
                        return(point.Quest == questid);
                    };

                    lock (value.QuestObjectives.ScenarioPosition)
                    {
                        value.QuestObjectives.ScenarioPosition.RemoveAll(FindPosition);
                    }
                    value.QuestObjectives.ScenarioSteps.Remove(questid);
                    value.QuestObjectives.Quests[3] = null;

                    SMSG_SCENARIOCOMPLETE spkt = new SMSG_SCENARIOCOMPLETE();
                    spkt.Scenario  = questid;
                    spkt.SessionId = value.id;
                    value.client.Send((byte[])spkt);
                    Thread.Sleep(3);
                    scenarioQuest.OnFinish(value.id);
                }
            }
        }
Exemple #20
0
        private void btnSave_Click(object sender, EventArgs e)
        {
            //Send Changed items
            mChanged?.ForEach(
                item =>
            {
                if (item == null)
                {
                    return;
                }

                foreach (var id in item.OriginalTaskEventIds.Keys)
                {
                    var found = false;
                    for (var i = 0; i < item.Tasks.Count; i++)
                    {
                        if (item.Tasks[i].Id == id)
                        {
                            found = true;
                        }
                    }

                    if (!found)
                    {
                        item.RemoveEvents.Add(item.OriginalTaskEventIds[id]);
                    }
                }

                PacketSender.SendSaveObject(item);
                PacketSender.SendSaveObject(item.StartEvent);
                PacketSender.SendSaveObject(item.EndEvent);
                item.Tasks?.ForEach(
                    tsk =>
                {
                    if (tsk?.EditingEvent == null)
                    {
                        return;
                    }

                    if (tsk.EditingEvent.Id != Guid.Empty)
                    {
                        PacketSender.SendSaveObject(tsk.EditingEvent);
                    }

                    tsk.EditingEvent.DeleteBackup();
                }
                    );

                item.StartEvent?.DeleteBackup();
                item.EndEvent?.DeleteBackup();
                item.DeleteBackup();
            }
                );

            mEditorItem = null;
            Hide();
            Globals.CurrentEditor = -1;
            Dispose();
        }
 public static bool MeetsCondition(
     MapZoneTypeIs condition,
     Player player,
     Event eventInstance,
     QuestBase questBase)
 {
     return(player.Map?.ZoneType == condition.ZoneType);
 }
Exemple #22
0
 private void OnQuestStarted(QuestBase quest)
 {
     // defer our updates until the next next hourlytick, because we are trying
     // to undo the changes made by e.g. BannerlordCommunityPatch, who does
     // them in the next hourly tick after this event.
     new NextHourlyTickListener(
         new Action <QuestBase>(DisableStoryDirectTimeoutIfNeeded), quest, 2);
 }
 public static bool MeetsCondition(
     MapIsCondition condition,
     Player player,
     Event eventInstance,
     QuestBase questBase
     )
 {
     return(player.MapId == condition.MapId);
 }
 public static bool MeetsCondition(
     QuestCompletedCondition condition,
     Player player,
     Event eventInstance,
     QuestBase questBase
     )
 {
     return(player.QuestCompleted(condition.QuestId));
 }
Exemple #25
0
        /// <remarks>
        /// Cancels only the QuestBase of it can be canceled.
        /// This is not yet implamented in any QuestBase of kro2, but most likely
        /// in the future there are going to be certain QuestBases that supports that.
        ///
        /// For example a chain of QuestBase events.
        /// </remarks>
        /// <param name="cpkt"></param>
        private void CM_QUESTCONFIRMCANCEL(CMSG_QUESTCONFIRMCANCEL cpkt)
        {
            if (QuestBaseID > 0)
            {
                try
                {
                    QuestBase myQuestBase = this.character.QuestObjectives[QuestBaseID];
                    if (myQuestBase != null)
                    {
                        //Removes the quest
                        this.character.QuestObjectives[QuestBaseID] = null;

                        //Invalidates all stepinfo
                        QuestBase.InvalidateQuest(myQuestBase, this.character);

                        //Send over new quest list
                        SMSG_QUESTINFO spkt3 = new SMSG_QUESTINFO();
                        spkt3.SessionId = this.character.id;
                        foreach (QuestBase Quest in this.character.QuestObjectives)
                        {
                            List <Saga.Quests.Objectives.ObjectiveList.StepInfo> Steps =
                                QuestBase.GetSteps(this.character, Quest.QuestId);

                            spkt3.AddQuest(Quest.QuestId, (byte)Steps.Count);
                            for (int i = 0; i < Steps.Count; i++)
                            {
                                Saga.Quests.Objectives.ObjectiveList.StepInfo currentStep =
                                    Steps[i];

                                uint nextstep = (i + 1 < Steps.Count) ? Steps[i + 1].StepId : 0;
                                spkt3.AddQuestStep(currentStep.StepId, currentStep.State, nextstep, Quest.isnew);
                            }
                        }
                        this.Send((byte[])spkt3);

                        //Remove all waypoints
                        SMSG_REMOVENAVIGATIONPOINT spkt = new SMSG_REMOVENAVIGATIONPOINT();
                        spkt.QuestID   = QuestBaseID;
                        spkt.SessionId = this.character.id;
                        this.Send((byte[])spkt);

                        //Updates all new icons
                        CommonFunctions.RefreshPersonalRequests(this.character);
                        CommonFunctions.UpdateNpcIcons(this.character);
                    }
                }
                finally
                {
                    //Reset our Quest Base Id
                    QuestBaseID = 0;
                }
            }
            else
            {
                QuestBaseID = cpkt.QuestID;
            }
        }
 public void AddQuest(QuestBase NewQuest)
 {
     Current.Add(NewQuest);
     foreach (QuestEventBase questEvent in NewQuest.GetCurrentEvent(NewQuest.FindFirstEvent()))
     {
         CurrentEvents.Add(questEvent);
     }
     AddQuestToQuestList();
 }
 public static bool MeetsCondition(
     Condition condition,
     Player player,
     Event eventInstance,
     QuestBase questBase
     )
 {
     return(ConditionHandlerRegistry.CheckCondition(condition, player, eventInstance, questBase));
 }
 public static bool MeetsCondition(
     GenderIsCondition condition,
     Player player,
     Event eventInstance,
     QuestBase questBase
     )
 {
     return(player.Gender == condition.Gender);
 }
Exemple #29
0
 public NextHourlyTickListener(Action <QuestBase> func, QuestBase quest,
                               int max = 1)
 {
     _func  = func;
     _quest = quest;
     _max   = max;
     CampaignEvents.HourlyTickEvent.AddNonSerializedListener(this,
                                                             OnHourlyTick);
 }
 public static bool MeetsCondition(
     QuestInProgressCondition condition,
     Player player,
     Event eventInstance,
     QuestBase questBase
     )
 {
     return(player.QuestInProgress(condition.QuestId, condition.Progress, condition.TaskId));
 }
Exemple #31
0
        /// <summary>
        /// Occurs on a official quest.
        /// </summary>
        /// <param name="npc">Npc who calls the event</param>
        /// <param name="target">Character who requires interaction</param>
        private void OnOfficialQuest(BaseNPC npc, Character target)
        {
            QuestBase OfficialQuest = target.QuestObjectives.OfficialQuest;

            if (OfficialQuest != null)
            {
                QuestBase.UserTalktoTarget(npc.ModelId, target, OfficialQuest);
            }
        }