示例#1
0
        private void UpdateCollectionQuest(NpcHandler npcHandler, ItemHandler itemHandler, Quest quest)
        {
            ResourceCollectionQuest request = (ResourceCollectionQuest)quest;
            bool isValidObjective           = ParseOneByObjective(itemHandler.Item.ParentSheetIndex, request.deliveryItem.Value.ParentSheetIndex);
            bool isValidRecipient           = ParseOneByRecipient(npcHandler.Target.Name, request.target.Value);

            if (isValidObjective && isValidRecipient)
            {
                int  numberItemsOwed = Config.LazyItemChecking ? request.number.Value : request.number.Value - request.numberCollected.Value;
                bool isValidAmount   = Game1.player.hasItemInInventory(itemHandler.Item.ParentSheetIndex, numberItemsOwed);

                if (isValidAmount)
                {
                    // Remove only when quest giver is Robin
                    if (request.target.Value.Equals("Robin"))
                    {
                        itemHandler.RemoveFromInventory(request.number.Value);
                    }

                    npcHandler.Update(0, true, null);
                    Update(quest, request.reward.Value);
                }
                else
                {
                    // Remove none and warn
                    WarnAmountLow(request.target.Value.ToString(), numberItemsOwed);
                }
            }
        }
示例#2
0
        private void Time_AfterDayStarted(object sender, EventArgs e)
        {
            Quest                   questy = (Quest)null;
            ItemDeliveryQuest       itemy  = (ItemDeliveryQuest)null;
            FishingQuest            fishy  = (FishingQuest)null;
            SlayMonsterQuest        slayey = (SlayMonsterQuest)null;
            ResourceCollectionQuest sourcy = (ResourceCollectionQuest)null;


            this.Monitor.Log($"Daily Help Wanted quest generated.");
            double num = new Random((int)Game1.uniqueIDForThisGame + (int)Game1.stats.DaysPlayed + (int)Game1.timeOfDay).NextDouble();

            if (Game1.stats.DaysPlayed <= 1U)
            {
                Game1.questOfTheDay = questy;
            }
            else if (num >= 1 - this.itemPercent)
            {
                itemy = new ItemDeliveryQuest();
                itemy.loadQuestInfo();
                Game1.questOfTheDay = itemy;
            }
            else if (num >= 1 - this.itemPercent - this.fishPercent)
            {
                fishy = new FishingQuest();
                fishy.loadQuestInfo();
                Game1.questOfTheDay = fishy;
            }
            else if (num >= 1 - this.itemPercent - this.fishPercent - this.noQuestPercent || MineShaft.lowestLevelReached <= 0 || Game1.stats.DaysPlayed <= 5U)
            {
                Game1.questOfTheDay = (Quest)null;
            }
            else if (num >= 1 - this.itemPercent - this.fishPercent - this.noQuestPercent - this.slayPercent)
            {
                slayey = new SlayMonsterQuest();
                slayey.loadQuestInfo();
                Game1.questOfTheDay = slayey;
            }
            else
            {
                sourcy = new ResourceCollectionQuest();
                sourcy.loadQuestInfo();
                Game1.questOfTheDay = sourcy;
            }
        }