public void UpdateSaveData(SaveHeroData saveHeroData) { saveHeroData.Status = Status; saveHeroData.InActivity = InActivity; saveHeroData.Trait = Trait == null ? "" : Trait.Id; saveHeroData.MissingDuration = MissingDuration; saveHeroData.RosterId = RosterId; saveHeroData.Name = HeroName; saveHeroData.HeroClass = HeroClass.StringId; saveHeroData.ResolveLevel = Resolve.Level; saveHeroData.ResolveXP = Resolve.CurrentXP; saveHeroData.CurrentHp = CurrentHealth; saveHeroData.StressLevel = Stress.CurrentValue; saveHeroData.WeaponLevel = Weapon.UpgradeLevel; saveHeroData.ArmorLevel = Armor.UpgradeLevel; saveHeroData.LeftTrinketId = LeftTrinket != null ? LeftTrinket.Id : ""; saveHeroData.RightTrinketId = RightTrinket != null ? RightTrinket.Id : ""; saveHeroData.Quirks = quirkData; saveHeroData.Buffs = BuffInfo; saveHeroData.SelectedCombatSkillIndexes.Clear(); saveHeroData.SelectedCampingSkillIndexes.Clear(); for (int i = 0; i < CurrentCombatSkills.Length; i++) { if (CurrentCombatSkills[i] != null && SelectedCombatSkills.Contains(CurrentCombatSkills[i])) { saveHeroData.SelectedCombatSkillIndexes.Add(i); } } for (int i = 0; i < CurrentCampingSkills.Length; i++) { if (CurrentCampingSkills[i] != null && SelectedCampingSkills.Contains(CurrentCampingSkills[i])) { saveHeroData.SelectedCampingSkillIndexes.Add(i); } } }
protected Character(SaveHeroData saveHeroData) : this(DarkestDungeonManager.Data.HeroClasses[saveHeroData.HeroClass], saveHeroData.ResolveLevel) { BuffInfo = saveHeroData.Buffs; }
public void UpdateFromEstate() { var campaign = DarkestDungeonManager.Campaign; IsFirstStart = false; LocationName = "Hamlet"; QuestsCompleted = campaign.QuestsComleted; CurrentWeek = campaign.CurrentWeek; GoldAmount = campaign.Estate.Currencies["gold"]; BustsAmount = campaign.Estate.Currencies["bust"]; DeedsAmount = campaign.Estate.Currencies["deed"]; PortraitsAmount = campaign.Estate.Currencies["portrait"]; CrestsAmount = campaign.Estate.Currencies["crest"]; InventoryTrinkets.Clear(); for (int i = 0; i < campaign.RealmInventory.Trinkets.Count; i++) { InventoryTrinkets.Add(campaign.RealmInventory.Trinkets[i].Id); } WagonTrinkets.Clear(); for (int i = 0; i < campaign.Estate.NomadWagon.Trinkets.Count; i++) { WagonTrinkets.Add(campaign.Estate.NomadWagon.Trinkets[i].Id); } ActivityLog = campaign.Logs; CompletedPlot = campaign.CompletedPlot; GeneratedQuests = campaign.Quests; RosterHeroes = new List <SaveHeroData>(); for (int i = 0; i < campaign.Heroes.Count; i++) { var newHeroData = new SaveHeroData(); campaign.Heroes[i].UpdateSaveData(newHeroData); RosterHeroes.Add(newHeroData); } StageCoachHeroes = new List <SaveHeroData>(); for (int i = 0; i < campaign.Estate.StageCoach.Heroes.Count; i++) { var newHeroData = new SaveHeroData(); campaign.Estate.StageCoach.Heroes[i].UpdateSaveData(newHeroData); StageCoachHeroes.Add(newHeroData); } StageEventHeroes = new List <SaveHeroData>(); for (int i = 0; i < campaign.Estate.StageCoach.EventHeroes.Count; i++) { var newHeroData = new SaveHeroData(); campaign.Estate.StageCoach.EventHeroes[i].UpdateSaveData(newHeroData); StageEventHeroes.Add(newHeroData); } DeathEventData = campaign.Estate.StageCoach.GraveIndexes; DeathRecords = campaign.Estate.Graveyard.Records; DungeonProgress = campaign.Dungeons; BuildingUpgrades = campaign.Estate.TownPurchases; InstancedPurchases = campaign.Estate.HeroPurchases; AbbeyActivitySlots.Clear(); for (int i = 0; i < campaign.Estate.Abbey.Activities.Count; i++) { if (AbbeyActivitySlots.Count < i + 1) { AbbeyActivitySlots.Add(new List <SaveActivitySlot>()); } for (int j = 0; j < campaign.Estate.Abbey.Activities[i].ActivitySlots.Count; j++) { if (AbbeyActivitySlots[i].Count < j + 1) { AbbeyActivitySlots[i].Add(new SaveActivitySlot()); } AbbeyActivitySlots[i][j].UpdateFromActivity(campaign.Estate.Abbey.Activities[i].ActivitySlots[j]); } } TavernActivitySlots.Clear(); for (int i = 0; i < campaign.Estate.Tavern.Activities.Count; i++) { if (TavernActivitySlots.Count < i + 1) { TavernActivitySlots.Add(new List <SaveActivitySlot>()); } for (int j = 0; j < campaign.Estate.Tavern.Activities[i].ActivitySlots.Count; j++) { if (TavernActivitySlots[i].Count < j + 1) { TavernActivitySlots[i].Add(new SaveActivitySlot()); } TavernActivitySlots[i][j].UpdateFromActivity(campaign.Estate.Tavern.Activities[i].ActivitySlots[j]); } } SanitariumActivitySlots.Clear(); if (SanitariumActivitySlots.Count < 1) { SanitariumActivitySlots.Add(new List <SaveActivitySlot>()); } for (int i = 0; i < campaign.Estate.Sanitarium.QuirkActivity.TreatmentSlots.Count; i++) { if (SanitariumActivitySlots[0].Count < i + 1) { SanitariumActivitySlots[0].Add(new SaveActivitySlot()); } SanitariumActivitySlots[0][i].UpdateFromTreatment(campaign.Estate.Sanitarium.QuirkActivity.TreatmentSlots[i]); } if (SanitariumActivitySlots.Count < 2) { SanitariumActivitySlots.Add(new List <SaveActivitySlot>()); } for (int i = 0; i < campaign.Estate.Sanitarium.DiseaseActivity.TreatmentSlots.Count; i++) { if (SanitariumActivitySlots[1].Count < i + 1) { SanitariumActivitySlots[1].Add(new SaveActivitySlot()); } SanitariumActivitySlots[1][i].UpdateFromTreatment(campaign.Estate.Sanitarium.DiseaseActivity.TreatmentSlots[i]); } CurrentEvent = campaign.TriggeredEvent == null ? "" : campaign.TriggeredEvent.Id; GuaranteedEvent = campaign.GuaranteedEvent == null ? "" : campaign.GuaranteedEvent.Id; EventData.Clear(); for (int i = 0; i < DarkestDungeonManager.Data.EventDatabase.Events.Count; i++) { if (!DarkestDungeonManager.Data.EventDatabase.Events[i].IsDefault) { EventData.Add(DarkestDungeonManager.Data.EventDatabase.Events[i].GetSaveData()); } } EventModifers = campaign.EventModifiers; TownNarrations = campaign.NarrationCampaignInfo; RaidNarrations = campaign.NarrationRaidInfo; CampaignNarrations = campaign.NarrationCampaignInfo; InRaid = false; }
public Hero(Estate estate, SaveHeroData saveHeroData) : base(saveHeroData) { InitializeHeroInfo(saveHeroData.RosterId, saveHeroData.Name, saveHeroData.HeroClass, saveHeroData.ResolveLevel, saveHeroData.StressLevel); Status = saveHeroData.Status; InActivity = saveHeroData.InActivity; MissingDuration = saveHeroData.MissingDuration; Resolve.CurrentXP = saveHeroData.ResolveXP; if (!estate.PickRosterId(RosterId)) { Debug.LogError("Missing id " + RosterId + " in estate from hero " + HeroName); } InitializeEquipment(estate.GetUpgradedWeaponLevel(RosterId, HeroClass.StringId), estate.GetUpgradedArmorLevel(RosterId, HeroClass.StringId)); if (saveHeroData.LeftTrinketId != "") { Trinket trinket = (Trinket)DarkestDungeonManager.Data.Items["trinket"][saveHeroData.LeftTrinketId]; Equip(trinket, TrinketSlot.Left); } if (saveHeroData.RightTrinketId != "") { Trinket trinket = (Trinket)DarkestDungeonManager.Data.Items["trinket"][saveHeroData.RightTrinketId]; Equip(trinket, TrinketSlot.Right); } foreach (var quirkEntry in saveHeroData.Quirks) { quirkData.Add(quirkEntry); ApplyQuirk(quirkEntry.Quirk); } CurrentCombatSkills = new CombatSkill[7]; SelectedCombatSkills = new List <CombatSkill>(); for (int i = 0; i < 7; i++) { CurrentCombatSkills[i] = HeroClass.CombatSkillVariants.Find(skill => skill.Id == HeroClass.CombatSkills[i].Id && skill.Level == estate.GetUpgradedSkillLevel(RosterId, HeroClass.StringId, HeroClass.CombatSkills[i].Id)); } foreach (int skillIndex in saveHeroData.SelectedCombatSkillIndexes) { if (CurrentCombatSkills[skillIndex] != null) { SelectedCombatSkills.Add(CurrentCombatSkills[skillIndex]); } } CurrentCampingSkills = new CampingSkill[HeroClass.CampingSkills.Count]; SelectedCampingSkills = new List <CampingSkill>(); for (int i = 0; i < CurrentCampingSkills.Length; i++) { if (estate.GetUpgradedCampingStatus(RosterId, HeroClass.CampingSkills[i].Id)) { CurrentCampingSkills[i] = HeroClass.CampingSkills[i]; } } foreach (int skillIndex in saveHeroData.SelectedCampingSkillIndexes) { if (CurrentCampingSkills[skillIndex] != null) { SelectedCampingSkills.Add(CurrentCampingSkills[skillIndex]); } } if (saveHeroData.Trait != "") { var heroTrait = DarkestDungeonManager.Data.Traits.Find(trait => trait.Id == saveHeroData.Trait); if (heroTrait != null) { ApplyTrait(heroTrait); } } GetPairedAttribute(AttributeType.HitPoints).CurrentValue = saveHeroData.CurrentHp; }
public void UpdateFromEstate() { var campaign = DarkestDungeonManager.Campaign; isFirstStart = false; gameVersion = Application.version; locationName = "Hamlet"; questsCompleted = campaign.QuestsComleted; currentWeek = campaign.CurrentWeek; goldAmount = campaign.Estate.Currencies["gold"].amount; bustsAmount = campaign.Estate.Currencies["bust"].amount; deedsAmount = campaign.Estate.Currencies["deed"].amount; portraitsAmount = campaign.Estate.Currencies["portrait"].amount; crestsAmount = campaign.Estate.Currencies["crest"].amount; #region Estate Misc #region Trinkets trinketData.Clear(); for (int i = 0; i < campaign.RealmInventory.Trinkets.Count; i++) { trinketData.Add(campaign.RealmInventory.Trinkets[i].Id); } #endregion #region Wagon Trinkets wagonData.Clear(); for (int i = 0; i < campaign.Estate.NomadWagon.Trinkets.Count; i++) { wagonData.Add(campaign.Estate.NomadWagon.Trinkets[i].Id); } #endregion activityLog = campaign.Logs; completedPlot = campaign.CompletedPlot; generatedQuests = campaign.Quests; #region Initial Heroes saveHeroData = new SaveHeroData[campaign.Heroes.Count]; for (int i = 0; i < campaign.Heroes.Count; i++) { saveHeroData[i] = new SaveHeroData(); campaign.Heroes[i].UpdateSaveData(saveHeroData[i]); } ; #endregion #region StageCoach Heroes stageCoachData = new SaveHeroData[campaign.Estate.StageCoach.Heroes.Count]; for (int i = 0; i < campaign.Estate.StageCoach.Heroes.Count; i++) { stageCoachData[i] = new SaveHeroData(); campaign.Estate.StageCoach.Heroes[i].UpdateSaveData(stageCoachData[i]); } stageEventData = new SaveHeroData[campaign.Estate.StageCoach.EventHeroes.Count]; for (int i = 0; i < campaign.Estate.StageCoach.EventHeroes.Count; i++) { stageEventData[i] = new SaveHeroData(); campaign.Estate.StageCoach.EventHeroes[i].UpdateSaveData(stageEventData[i]); } deathEventData = campaign.Estate.StageCoach.GraveIndexes; #endregion deathRecords = campaign.Estate.Graveyard.Records; saveDungeonData = campaign.Dungeons; buildingUpgrades = campaign.Estate.TownPurchases; instancedPurchases = campaign.Estate.HeroPurchases; abbeyActivitySlots.Clear(); for (int i = 0; i < campaign.Estate.Abbey.Activities.Count; i++) { if (abbeyActivitySlots.Count < i + 1) { abbeyActivitySlots.Add(new List <SaveActivitySlot>()); } for (int j = 0; j < campaign.Estate.Abbey.Activities[i].ActivitySlots.Count; j++) { if (abbeyActivitySlots[i].Count < j + 1) { abbeyActivitySlots[i].Add(new SaveActivitySlot()); } abbeyActivitySlots[i][j].UpdateFromActivity(campaign.Estate.Abbey.Activities[i].ActivitySlots[j]); } } tavernActivitySlots.Clear(); for (int i = 0; i < campaign.Estate.Tavern.Activities.Count; i++) { if (tavernActivitySlots.Count < i + 1) { tavernActivitySlots.Add(new List <SaveActivitySlot>()); } for (int j = 0; j < campaign.Estate.Tavern.Activities[i].ActivitySlots.Count; j++) { if (tavernActivitySlots[i].Count < j + 1) { tavernActivitySlots[i].Add(new SaveActivitySlot()); } tavernActivitySlots[i][j].UpdateFromActivity(campaign.Estate.Tavern.Activities[i].ActivitySlots[j]); } } sanitariumActivitySlots.Clear(); if (sanitariumActivitySlots.Count < 1) { sanitariumActivitySlots.Add(new List <SaveActivitySlot>()); } for (int i = 0; i < campaign.Estate.Sanitarium.QuirkActivity.TreatmentSlots.Count; i++) { if (sanitariumActivitySlots[0].Count < i + 1) { sanitariumActivitySlots[0].Add(new SaveActivitySlot()); } sanitariumActivitySlots[0][i].UpdateFromTreatment(campaign.Estate.Sanitarium.QuirkActivity.TreatmentSlots[i]); } if (sanitariumActivitySlots.Count < 2) { sanitariumActivitySlots.Add(new List <SaveActivitySlot>()); } for (int i = 0; i < campaign.Estate.Sanitarium.DiseaseActivity.TreatmentSlots.Count; i++) { if (sanitariumActivitySlots[1].Count < i + 1) { sanitariumActivitySlots[1].Add(new SaveActivitySlot()); } sanitariumActivitySlots[1][i].UpdateFromTreatment(campaign.Estate.Sanitarium.DiseaseActivity.TreatmentSlots[i]); } currentEvent = campaign.TriggeredEvent == null ? "" : campaign.TriggeredEvent.Id; guaranteedEvent = campaign.GuaranteedEvent == null ? "" : campaign.GuaranteedEvent.Id; eventData.Clear(); for (int i = 0; i < DarkestDungeonManager.Data.EventDatabase.Events.Count; i++) { if (!DarkestDungeonManager.Data.EventDatabase.Events[i].IsDefault) { eventData.Add(DarkestDungeonManager.Data.EventDatabase.Events[i].GetSaveData()); } } eventModifers = campaign.EventModifiers; townNarrations = campaign.NarrationCampaignInfo; raidNarrations = campaign.NarrationRaidInfo; campaignNarrations = campaign.NarrationCampaignInfo; InRaid = false; #endregion }