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