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; } } }
public void setRank(int r) { if (r > 0) { myQuests = new QuestBase(); } }
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); }
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)); }
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(); } }
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); }
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); }
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); } } }
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); }
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)); }
/// <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); }
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)); }
/// <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); } }