示例#1
0
        public virtual bool CheckIfComplete(IQuestInfo questData, ICompletionArgs completion)
        {
            if (questData.VanillaQuest.completed.Value ||
                completion.String != "sell" ||
                completion.Item?.ParentSheetIndex != this.ItemToSellIndex ||
                completion.Number1 <= 0)
            {
                return(false);
            }

            this.ItemsSold.Value += completion.Number1;

            if (this.ItemsSold.Value >= this.Count)
            {
                return(true);
            }

            return(false);
        }
示例#2
0
        public void Execute(ICompletionArgs args)
        {
            if (this.ManagedQuest == null)
            {
                return;
            }

            var manager = QuestFrameworkMod.Instance.QuestManager;
            int questId = manager.ResolveGameQuestId(this.ManagedQuest.GetFullName());

            switch (this.Action)
            {
            case Actions.Accept:
                manager.AcceptQuest(this.ManagedQuest.GetFullName());
                break;

            case Actions.CheckIfComplete:
                var quest = Game1.player.questLog.Where(q => q.id.Value == questId).FirstOrDefault();

                if (quest != null)
                {
                    quest.checkIfComplete(args.Npc, args.Number1, args.Number2, args.Item, args.String);
                }
                break;

            case Actions.Complete:
                if (questId > -1 && Game1.player.hasQuest(questId))
                {
                    Game1.player.completeQuest(questId);
                }
                break;

            case Actions.Remove:
                if (Game1.player.hasQuest(questId))
                {
                    return;
                }

                Game1.player.removeQuest(questId);
                break;
            }
        }
示例#3
0
        public bool CheckIfComplete(IQuestInfo questData, ICompletionArgs completion)
        {
            if (questData.VanillaQuest.completed.Value)
                return false;

            if (this.TalkTo != null && completion.Npc != null && completion.Npc.isVillager() && this.TalkTo == completion.Npc.Name)
            {
                if (!string.IsNullOrEmpty(this.ReactionText))
                {
                    completion.Npc.CurrentDialogue.Push(new Dialogue(this.ReactionText, completion.Npc));
                    Game1.drawDialogue(completion.Npc);
                }

                if (Game1.activeClickableMenu is DialogueBox && Game1.currentSpeaker == completion.Npc)
                {
                    questData.VanillaQuest.questComplete();

                    return true;
                }
            }

            return false;
        }
示例#4
0
 protected abstract bool CheckHookExecute(Hook hook, ICompletionArgs args);