Exemplo n.º 1
0
    public void Read(BinaryReader br)
    {
        // Id = br.ReadString(); called in BinarySaveDataHelper.Create<Quest>()
        Type       = br.ReadString();
        Dungeon    = br.ReadString();
        Difficulty = br.ReadInt32();
        Length     = br.ReadInt32();
        string goalId = br.ReadString();

        Goal             = DarkestDungeonManager.Data.QuestDatabase.QuestGoals[goalId];
        Reward           = new CompletionReward();
        Reward.ResolveXP = br.ReadInt32();
        int questRewardGenCount = br.ReadInt32();

        Reward.ItemDefinitions.Clear();
        for (int j = 0; j < questRewardGenCount; j++)
        {
            Reward.ItemDefinitions.Add(new ItemDefinition()
            {
                Id     = br.ReadString(),
                Type   = br.ReadString(),
                Amount = br.ReadInt32(),
            });
        }

        IsProgression               = br.ReadBoolean();
        HasStatueContents           = br.ReadBoolean();
        CompletionDungeonXp         = br.ReadBoolean();
        CanRetreat                  = br.ReadBoolean();
        AlwaysRetreatFromRaid       = br.ReadBoolean();
        RetreatKillCount            = br.ReadInt32();
        IsSurpriseEnabled           = br.ReadBoolean();
        IsScoutingEnabled           = br.ReadBoolean();
        IsStressClearedOnCompletion = br.ReadBoolean();
        RosterBuffOnFailureMinimumPartyResolveLevel = br.ReadInt32();

        int rostBuffsFailGenCount = br.ReadInt32();

        RosterBuffsOnFailure.Clear();
        for (int j = 0; j < rostBuffsFailGenCount; j++)
        {
            RosterBuffsOnFailure.Add(DarkestDungeonManager.Data.Buffs[br.ReadString()]);
        }

        int suggestedGenCount = br.ReadInt32();

        SuggestedTrinkets.Clear();
        for (int j = 0; j < suggestedGenCount; j++)
        {
            SuggestedTrinkets.Add(new ItemDefinition("trinket", br.ReadString(), br.ReadInt32()));
        }

        int tagGenCount = br.ReadInt32();

        UpgradeTagsRemovedOnIgnore.Clear();
        for (int j = 0; j < tagGenCount; j++)
        {
            UpgradeTagsRemovedOnIgnore.Add(new UpgradeTag(br.ReadString(), br.ReadInt32()));
        }
    }
Exemplo n.º 2
0
    private static void DistributeQuestRewards(QuestGenerationInfo questInfo, QuestDatabase questData)
    {
        var trinketList = DarkestDungeonManager.Data.Items["trinket"].Values.Cast <Trinket>().ToList();

        foreach (var dungeonInfo in questInfo.DungeonQuests)
        {
            foreach (var quest in dungeonInfo.Quests)
            {
                if (quest.IsPlotQuest)
                {
                    var plotQuest = (PlotQuest)quest;
                    if (plotQuest.PlotTrinket != null)
                    {
                        var            rarityTrinketList = trinketList.FindAll(item => item.RarityId == plotQuest.PlotTrinket.Rarity);
                        ItemDefinition trinket           = new ItemDefinition();
                        trinket.Type   = "trinket";
                        trinket.Amount = 1;
                        trinket.Id     = rarityTrinketList[Random.Range(0, rarityTrinketList.Count)].Id;
                        plotQuest.Reward.ItemDefinitions.Add(trinket);
                    }
                    continue;
                }

                CompletionReward reward = new CompletionReward();
                quest.Reward     = reward;
                reward.ResolveXP = questData.QuestGeneration.ResolveXpReward[quest.Difficulty][quest.Length];
                ItemDefinition heirloomOne = new ItemDefinition();
                ItemDefinition heirloomTwo = new ItemDefinition();

                heirloomOne.Type   = "heirloom";
                heirloomOne.Id     = questData.QuestGeneration.HeirloomTypes[quest.Dungeon][0];
                heirloomOne.Amount = questData.QuestGeneration.HeirloomAmounts[heirloomOne.Id][quest.Difficulty][quest.Length];
                reward.ItemDefinitions.Add(heirloomOne);

                heirloomTwo.Type   = "heirloom";
                heirloomTwo.Id     = questData.QuestGeneration.HeirloomTypes[quest.Dungeon][1];
                heirloomTwo.Amount = questData.QuestGeneration.HeirloomAmounts[heirloomOne.Id][quest.Difficulty][quest.Length];
                reward.ItemDefinitions.Add(heirloomTwo);
                reward.ItemDefinitions.Add(questData.QuestGeneration.ItemTable[quest.Difficulty][quest.Length][0]);

                foreach (var trinketInfo in questData.QuestGeneration.TrinketChances)
                {
                    if (trinketInfo.Value[quest.Difficulty][quest.Length] != 1)
                    {
                        continue;
                    }

                    var            rarityTrinketList = trinketList.FindAll(item => item.RarityId == trinketInfo.Key);
                    ItemDefinition trinket           = new ItemDefinition();
                    trinket.Type   = "trinket";
                    trinket.Amount = 1;
                    trinket.Id     = rarityTrinketList[Random.Range(0, rarityTrinketList.Count)].Id;
                    reward.ItemDefinitions.Add(trinket);
                    break;
                }
            }
        }
    }