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())); } }
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; } } } }