public void Load(SaveCampaignData saveData)
    {
        EventModifiers = saveData.EventModifers;

        foreach (var townEvent in DarkestDungeonManager.Data.EventDatabase.Events)
        {
            townEvent.SetDefaultState();
        }

        SaveSlotId     = saveData.SaveId;
        CurrentWeek    = saveData.CurrentWeek;
        QuestsComleted = saveData.QuestsCompleted;

        Estate         = new Estate(saveData);
        RealmInventory = new RealmInventory(saveData);
        CompletedPlot  = saveData.CompletedPlot;

        Heroes = new List <Hero>();
        saveData.RosterHeroes.ForEach(hero => Heroes.Add(new Hero(Estate, hero)));
        saveData.StageCoachHeroes.ForEach(hero => Estate.StageCoach.Heroes.Add(new Hero(Estate, hero)));
        saveData.StageEventHeroes.ForEach(hero => Estate.StageCoach.EventHeroes.Add(new Hero(Estate, hero)));
        saveData.WagonTrinkets.ForEach(trinketName => Estate.NomadWagon.Trinkets.Add(DarkestDungeonManager.Data.Items["trinket"][trinketName] as Trinket));

        Estate.StageCoach.GraveIndexes = saveData.DeathEventData;
        Estate.Abbey.UpdateActivitySlots(saveData);
        Estate.Tavern.UpdateActivitySlots(saveData);
        Estate.Sanitarium.QuirkActivity.UpdateActivitySlots(saveData);
        Estate.Sanitarium.DiseaseActivity.UpdateActivitySlots(saveData);

        Dungeons = saveData.DungeonProgress;
        Quests   = saveData.GeneratedQuests;
        if (Quests.Count == 0 && saveData.InRaid == false)
        {
            GenerateQuests();
        }

        Logs = new List <WeekActivityLog>(saveData.ActivityLog);
        if (Logs.Count == 0)
        {
            Logs.Add(new WeekActivityLog(CurrentWeek));
        }

        EventsOption = DarkestDungeonManager.Data.EventDatabase.Settings[2];

        if (saveData.CurrentEvent != "")
        {
            TriggeredEvent = DarkestDungeonManager.Data.EventDatabase.Events.Find(townEvent => townEvent.Id == saveData.CurrentEvent);
            if (TriggeredEvent != null)
            {
                EventModifiers.EventData.AddRange(TriggeredEvent.Data);
            }
        }

        if (saveData.GuaranteedEvent != "")
        {
            GuaranteedEvent = DarkestDungeonManager.Data.EventDatabase.Events.Find(townEvent => townEvent.Id == saveData.GuaranteedEvent);
            if (GuaranteedEvent != null)
            {
                EventModifiers.EventData.AddRange(GuaranteedEvent.Data);
            }
        }

        foreach (var saveEventEntry in saveData.EventData)
        {
            var targetEvent = DarkestDungeonManager.Data.EventDatabase.Events.Find(townEvent => townEvent.Id == saveEventEntry.EventId);
            if (targetEvent != null)
            {
                targetEvent.UpdateFromSave(saveEventEntry);
            }
        }

        NarrationCampaignInfo = saveData.CampaignNarrations;
        NarrationRaidInfo     = saveData.RaidNarrations;
        NarrationTownInfo     = saveData.TownNarrations;
    }
    public void Load(SaveCampaignData saveData)
    {
        EventModifiers = saveData.eventModifers;

        foreach (var townEvent in DarkestDungeonManager.Data.EventDatabase.Events)
            townEvent.SetDefaultState();

        SaveSlotId = saveData.saveId;
        CurrentWeek = saveData.currentWeek;

        QuestsComleted = saveData.questsCompleted;

        Estate = new Estate(saveData);
        RealmInventory = new RealmInventory(saveData);
        CompletedPlot = saveData.completedPlot;

        Heroes = new List<Hero>();
        for (int i = 0; i < saveData.saveHeroData.Length; i++)
            Heroes.Add(new Hero(Estate, saveData.saveHeroData[i]));
        for (int i = 0; i < saveData.stageCoachData.Length; i++)
            Estate.StageCoach.Heroes.Add(new Hero(Estate, saveData.stageCoachData[i]));
        for (int i = 0; i < saveData.stageEventData.Length; i++)
            Estate.StageCoach.EventHeroes.Add(new Hero(Estate, saveData.stageEventData[i]));
        for (int i = 0; i < saveData.wagonData.Count; i++)
            Estate.NomadWagon.Trinkets.Add(DarkestDungeonManager.Data.Items["trinket"][saveData.wagonData[i]] as Trinket);
        Estate.StageCoach.GraveIndexes = saveData.deathEventData;

        Estate.Abbey.UpdateActivitySlots(saveData);
        Estate.Tavern.UpdateActivitySlots(saveData);
        Estate.Sanitarium.QuirkActivity.UpdateActivitySlots(saveData);
        Estate.Sanitarium.DiseaseActivity.UpdateActivitySlots(saveData);

        Dungeons = saveData.saveDungeonData;
        Quests = saveData.generatedQuests;
        if (Quests.Count == 0 && saveData.InRaid == false)
            GenerateQuests();

        Logs = new List<WeekActivityLog>(saveData.activityLog);
        if (Logs.Count == 0)
            Logs.Add(new WeekActivityLog(CurrentWeek));

        EventsOption = DarkestDungeonManager.Data.EventDatabase.Settings[2];

        if(saveData.currentEvent != "")
        {
            TriggeredEvent = DarkestDungeonManager.Data.EventDatabase.Events.Find(townEvent => townEvent.Id == saveData.currentEvent);
            if (TriggeredEvent != null)
                EventModifiers.EventData.AddRange(TriggeredEvent.Data);
        }

        if(saveData.guaranteedEvent != "")
        {
            GuaranteedEvent = DarkestDungeonManager.Data.EventDatabase.Events.Find(townEvent => townEvent.Id == saveData.guaranteedEvent);
            if (GuaranteedEvent != null)
                EventModifiers.EventData.AddRange(GuaranteedEvent.Data);
        }

        foreach(var saveEventEntry in saveData.eventData)
        {
            var targetEvent = DarkestDungeonManager.Data.EventDatabase.Events.Find(townEvent => townEvent.Id == saveEventEntry.EventId);
            if(targetEvent != null)
                targetEvent.UpdateFromSave(saveEventEntry);
        }

        NarrationCampaignInfo = saveData.campaignNarrations;
        NarrationRaidInfo = saveData.raidNarrations;
        NarrationTownInfo = saveData.townNarrations;
    }