Exemple #1
0
    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);
            }
        }
    }
Exemple #2
0
 protected Character(SaveHeroData saveHeroData) :
     this(DarkestDungeonManager.Data.HeroClasses[saveHeroData.HeroClass], saveHeroData.ResolveLevel)
 {
     BuffInfo = saveHeroData.Buffs;
 }
Exemple #3
0
    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;
    }
Exemple #4
0
    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;
    }
Exemple #5
0
    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
    }