public BiomeSurvivalSkill(CellGroup group, BiomeSurvivalSkill baseSkill) : base(group, baseSkill.Id, baseSkill.Name, baseSkill.RngOffset, baseSkill.Value)
    {
        BiomeId = baseSkill.BiomeId;

        Group.AddBiomeSurvivalSkill(this);

        CalculateNeighborhoodBiomePresence();
    }
    public static CellCulturalSkill CreateCellInstance(CellGroup group, CulturalSkill baseSkill, float initialValue)
    {
        if (BiomeSurvivalSkill.IsBiomeSurvivalSkill(baseSkill))
        {
            return(new BiomeSurvivalSkill(group, baseSkill, initialValue));
        }

        if (SeafaringSkill.IsSeafaringSkill(baseSkill))
        {
            return(new SeafaringSkill(group, baseSkill, initialValue));
        }

        throw new System.Exception("Unhandled CulturalSkill type: " + baseSkill.Id);
    }
    public static CellCulturalSkill CreateCellInstance(string id, CellGroup group, float initialValue = 0)
    {
        if (BiomeSurvivalSkill.IsBiomeSurvivalSkill(id))
        {
            Biome biome = Biome.Biomes[BiomeSurvivalSkill.GetBiomeId(id)];

            return(new BiomeSurvivalSkill(group, biome, initialValue));
        }

        if (SeafaringSkill.IsSeafaringSkill(id))
        {
            return(new SeafaringSkill(group, initialValue));
        }

        throw new System.Exception("Unhandled CulturalSkill type: " + id);
    }
    public virtual void FinalizeLoad()
    {
        if (Id.Contains(BiomeSurvivalSkill.SkillIdSuffix))
        {
            string idPrefix = BiomeSurvivalSkill.GetBiomeId(Id);
            Biome  biome    = Biome.Biomes[idPrefix];

            Name      = BiomeSurvivalSkill.GenerateName(biome);
            RngOffset = BiomeSurvivalSkill.GenerateRngOffset(biome);
        }
        else
        {
            switch (Id)
            {
            case SeafaringSkill.SkillId:
                Name      = SeafaringSkill.SkillName;
                RngOffset = SeafaringSkill.SkillRngOffset;
                break;

            default:
                throw new System.Exception("Unhandled Skill Id: " + Id);
            }
        }
    }