diff --git a/Pf2eDataScrapper/Importers/AbstractImporter.cs b/Pf2eDataScrapper/Importers/AbstractImporter.cs
index 7eaac9b..1076b91 100644
--- a/Pf2eDataScrapper/Importers/AbstractImporter.cs
+++ b/Pf2eDataScrapper/Importers/AbstractImporter.cs
@@ -1,4 +1,6 @@
-namespace Pf2eDataScrapper.Importers
+using Pf2eDataScrapper.Importers.Repositories;
+
+namespace Pf2eDataScrapper.Importers
{
///
/// Абстрактный класс импортёра
@@ -15,10 +17,7 @@
///
public abstract string Slug { get; }
- ///
- /// Ссылка на git-репозиторий для клонирования
- ///
- public abstract string GitUrl { get; }
+ public abstract AbstractImporterRepository Repository { get; }
///
/// Путь к директории с данными для импортёра
diff --git a/Pf2eDataScrapper/Importers/Implementations/Aonprd/AonprdImporter.cs b/Pf2eDataScrapper/Importers/Implementations/Aonprd/AonprdImporter.cs
new file mode 100644
index 0000000..ede516a
--- /dev/null
+++ b/Pf2eDataScrapper/Importers/Implementations/Aonprd/AonprdImporter.cs
@@ -0,0 +1,40 @@
+using Pf2eDataScrapper.Importers.Repositories;
+using Pf2eDataScrapper.Importers.Implementations.Aonprd.SchemaBuilder;
+
+namespace Pf2eDataScrapper.Importers.Implementations.Aonprd
+{
+ internal class AonprdImporter : AbstractImporter
+ {
+ public override string Name => "Archives of Nethys Pathfinder 2e";
+
+ public override string Slug => "aonprd";
+
+ public override AbstractImporterRepository Repository => new AonprdRepository(this, "https://elasticsearch.aonprd.com");
+
+ public AonprdLoader Loader { get; }
+
+ public AonprdImporter()
+ {
+ Loader = new AonprdLoader(this);
+ }
+
+ public override void Prepare()
+ {
+ Repository.Update();
+ Loader.Prepare();
+ }
+
+ public override void BuildSchemas()
+ {
+ var builder = new AonprdSchemaBuilder(Loader);
+
+ builder.BuildSchemas();
+ builder.Save(EnvSettings.OutputDir);
+ }
+
+ public override void Import()
+ {
+ throw new NotImplementedException();
+ }
+ }
+}
diff --git a/Pf2eDataScrapper/Importers/Implementations/Aonprd/AonprdLoader.cs b/Pf2eDataScrapper/Importers/Implementations/Aonprd/AonprdLoader.cs
new file mode 100644
index 0000000..c5baa85
--- /dev/null
+++ b/Pf2eDataScrapper/Importers/Implementations/Aonprd/AonprdLoader.cs
@@ -0,0 +1,79 @@
+using Microsoft.EntityFrameworkCore.Metadata.Internal;
+using Newtonsoft.Json.Linq;
+using Pf2eDataScrapper.Importers.Implementations.Aonprd.Compendium;
+
+namespace Pf2eDataScrapper.Importers.Implementations.Aonprd
+{
+ internal class AonprdLoader (AonprdImporter importer)
+ {
+ public AonprdImporter Importer = importer;
+
+ public AonprdCompendium Compendium = new();
+
+ public int ItemCount => Compendium.Count;
+
+ public void Prepare()
+ {
+ using var indexFile = new StreamReader(Path.Combine(Importer.Dir, "index.json"));
+ var indexJson = JObject.Parse(indexFile.ReadToEnd());
+
+ foreach (var kvp in indexJson)
+ {
+ var file = kvp.Key.ToString();
+ var items = (JArray)kvp.Value!;
+
+ foreach (var item in items)
+ {
+ Compendium.AddReference(item.ToString(), file);
+ }
+ }
+ }
+
+ public IEnumerable Entries()
+ {
+ return Entries(Compendium.Types.Keys.ToArray());
+ }
+
+ public IEnumerable Entries(string types)
+ {
+ return Entries([types]);
+ }
+
+ public IEnumerable Entries(string[] types)
+ {
+ foreach (var file in Compendium.Files(types))
+ {
+ if (file is null)
+ {
+ continue;
+ }
+
+ using var fileReader = new StreamReader(Path.Combine(Importer.Dir, $"{file}.json"));
+ var array = JArray.Parse(fileReader.ReadToEnd());
+
+ foreach (var item in array)
+ {
+ var id = item.SelectToken("id")?.ToString();
+
+ if (id is null)
+ {
+ continue;
+ }
+
+ var entry = new LoaderEntry(id, file, (JObject)item);
+
+ if (types.Contains(entry.Type))
+ {
+ yield return entry;
+ }
+ }
+ }
+ }
+
+
+ public class LoaderEntry(string id, string file, JObject itemJson) : AonprdReference(id, file)
+ {
+ public JObject Json { get; } = itemJson;
+ }
+ }
+}
diff --git a/Pf2eDataScrapper/Importers/Implementations/Aonprd/AonprdRepository.cs b/Pf2eDataScrapper/Importers/Implementations/Aonprd/AonprdRepository.cs
new file mode 100644
index 0000000..1d4cc34
--- /dev/null
+++ b/Pf2eDataScrapper/Importers/Implementations/Aonprd/AonprdRepository.cs
@@ -0,0 +1,102 @@
+using Konsole;
+using Newtonsoft.Json.Linq;
+using Pf2eDataScrapper.Importers.Repositories;
+
+namespace Pf2eDataScrapper.Importers.Implementations.Aonprd
+{
+ internal class AonprdRepository(AbstractImporter importer, string searchUrl): AbstractImporterRepository(importer)
+ {
+ public readonly string SearchUrl = searchUrl;
+
+ public int Revision { get; private set; }
+
+ private string Load(string url)
+ {
+ if (!url.StartsWith("http://") && !url.StartsWith("https://"))
+ {
+ url = SearchUrl + url;
+ }
+
+ using var client = new HttpClient();
+ using var stream = client.GetStreamAsync(url);
+ using var reader = new StreamReader(stream.Result);
+
+ return reader.ReadToEnd();
+ }
+
+
+ public override void Update()
+ {
+ if (CheckRevision())
+ {
+ Console.WriteLine($"Данные Aonprd актуальны, текущая ревизия {Revision}.");
+ return;
+ }
+
+ Console.WriteLine($"Данные Aonprd устарели, обновляем {RepositoryDirPath} до ревизии {Revision}...");
+
+ if (Directory.Exists(RepositoryDirPath))
+ {
+ Directory.Delete(RepositoryDirPath, true);
+ }
+ Directory.CreateDirectory(RepositoryDirPath);
+
+ WriteFile("revision.txt", Revision.ToString());
+
+ Console.WriteLine("Загрузка индекса...");
+ var indexContent = Load($"/json-data/aon{Revision}-index.json");
+ WriteFile("index.json", indexContent);
+
+ var indexJson = JObject.Parse(indexContent);
+
+ Console.WriteLine("Загрузка индексных файлов...");
+
+ var bar = new ProgressBar(indexJson.Count);
+ var i = 0;
+
+ foreach (var kvp in indexJson)
+ {
+ var fileName = kvp.Key;
+ bar.Refresh(i++, fileName);
+
+ var fileContent = Load($"/json-data/{fileName}.json");
+ WriteFile($"{fileName}.json", fileContent);
+ }
+
+
+ bar.Refresh(indexJson.Count, "Готово!");
+ }
+
+ ///
+ /// Проверка актуальности данных
+ ///
+ /// true - актуальная ревизия, false - устаревшая/отсутсвует
+ private bool CheckRevision()
+ {
+ var page = JObject.Parse(Load("/aon/_doc/feat-1"));
+
+ Revision = Convert.ToInt32(page.SelectToken("_index")?.ToObject()?.Replace("aon", "") ?? throw new Exception("Can't get revision"));
+
+ var revisionFile = Path.Combine(RepositoryDirPath, "revision.txt");
+ if (!File.Exists(revisionFile))
+ {
+ return false;
+ }
+
+ using var reader = new StreamReader(revisionFile);
+ var lastRevision = reader.ReadToEnd();
+ return lastRevision == Revision.ToString();
+ }
+
+ private void WriteFile (string path, string content)
+ {
+ var filePath = Path.Combine(RepositoryDirPath, path);
+ if (File.Exists(filePath))
+ {
+ File.Delete(filePath);
+ }
+ using var writer = new StreamWriter(filePath);
+ writer.Write(content);
+ }
+ }
+}
diff --git a/Pf2eDataScrapper/Importers/Implementations/Aonprd/Compendium/AonprdCompendium.cs b/Pf2eDataScrapper/Importers/Implementations/Aonprd/Compendium/AonprdCompendium.cs
new file mode 100644
index 0000000..761cac2
--- /dev/null
+++ b/Pf2eDataScrapper/Importers/Implementations/Aonprd/Compendium/AonprdCompendium.cs
@@ -0,0 +1,28 @@
+namespace Pf2eDataScrapper.Importers.Implementations.Aonprd.Compendium
+{
+ internal class AonprdCompendium
+ {
+ public readonly Dictionary Types = [];
+
+ public void AddReference(string id, string file)
+ {
+ AonprdReference reference = new(id, file);
+
+ if (Types.TryGetValue(reference.Type, out var type))
+ {
+ type.Add(reference);
+ }
+ else
+ {
+ Types.Add(reference.Type, new AonprdType(reference));
+ }
+ }
+
+ public int Count => Types.Values.Sum(x => x.Count);
+
+ public IEnumerable Files(IEnumerable types) => Types.Values
+ .Where(t => types.Contains(t.Type))
+ .SelectMany(t => t.Files)
+ .Distinct();
+ }
+}
diff --git a/Pf2eDataScrapper/Importers/Implementations/Aonprd/Compendium/AonprdReference.cs b/Pf2eDataScrapper/Importers/Implementations/Aonprd/Compendium/AonprdReference.cs
new file mode 100644
index 0000000..384d066
--- /dev/null
+++ b/Pf2eDataScrapper/Importers/Implementations/Aonprd/Compendium/AonprdReference.cs
@@ -0,0 +1,35 @@
+
+namespace Pf2eDataScrapper.Importers.Implementations.Aonprd.Compendium
+{
+ internal class AonprdReference(string id, string file)
+ {
+ public readonly string Id = id;
+
+ public readonly string Type = ResolveType(id);
+
+ public readonly string File = file;
+
+ public static string ResolveType(string id)
+ {
+ static string? subType(string type, string cat)
+ {
+ if (type.StartsWith($"{cat}-") && type != cat)
+ {
+ if (type.EndsWith("-bonus"))
+ {
+ return $"{cat}-bonus";
+ }
+ else
+ {
+ return $"{cat}-sub";
+ }
+ }
+ return null;
+ }
+
+ var type = string.Join('-', id.Split('-')[0..^1]);
+
+ return subType(type, "equipment") ?? subType(type, "weapon") ?? type;
+ }
+ }
+}
diff --git a/Pf2eDataScrapper/Importers/Implementations/Aonprd/Compendium/AonprdType.cs b/Pf2eDataScrapper/Importers/Implementations/Aonprd/Compendium/AonprdType.cs
new file mode 100644
index 0000000..8212a36
--- /dev/null
+++ b/Pf2eDataScrapper/Importers/Implementations/Aonprd/Compendium/AonprdType.cs
@@ -0,0 +1,23 @@
+namespace Pf2eDataScrapper.Importers.Implementations.Aonprd.Compendium
+{
+ internal class AonprdType(string type)
+ {
+ public readonly string Type = type;
+
+ public readonly List Items = [];
+
+ public AonprdType(AonprdReference reference) : this(reference.Type)
+ {
+ Items.Add(reference);
+ }
+
+ public void Add(AonprdReference reference)
+ {
+ Items.Add(reference);
+ }
+
+ public List Files => [.. Items.Select(x => x.File).Distinct()];
+
+ public int Count => Items.Count;
+ }
+}
diff --git a/Pf2eDataScrapper/Importers/Implementations/Aonprd/SchemaBuilder/AonprdSchemaBuilder.cs b/Pf2eDataScrapper/Importers/Implementations/Aonprd/SchemaBuilder/AonprdSchemaBuilder.cs
new file mode 100644
index 0000000..284132d
--- /dev/null
+++ b/Pf2eDataScrapper/Importers/Implementations/Aonprd/SchemaBuilder/AonprdSchemaBuilder.cs
@@ -0,0 +1,87 @@
+using Konsole;
+using Pf2eDataScrapper.Importers.Implementations.Aonprd.Compendium;
+using Pf2eDataScrapper.SchemaBuilder;
+
+namespace Pf2eDataScrapper.Importers.Implementations.Aonprd.SchemaBuilder
+{
+ internal class AonprdSchemaBuilder(AonprdLoader loader)
+ {
+ public readonly AonprdLoader Loader = loader;
+
+ public readonly AonprdCompendium Compendium = loader.Compendium;
+
+ // public readonly AonprdSchemaTypeResolver Resolver = new();
+
+ public readonly Dictionary Schemas = [];
+
+ private SchemaNode GetSchema(AonprdLoader.LoaderEntry entry)
+ {
+ string key = entry.Type;
+ if (!Schemas.TryGetValue(key, out SchemaNode? value))
+ {
+ value = new SchemaNode()
+ {
+ // Resolver = Resolver,
+ Path = key
+ };
+ Schemas[key] = value;
+ }
+ return value;
+ }
+
+ public void BuildSchemas()
+ {
+ Console.WriteLine("Building schemas...");
+
+ var bar = new ProgressBar(Loader.ItemCount);
+ var i = 0;
+
+ foreach (var entry in Loader.Entries())
+ {
+ bar.Refresh(i++, entry.Type);
+ GetSchema(entry).AddValue(entry.Json);
+ }
+
+ bar.Refresh(Loader.ItemCount, "Done!");
+ }
+
+ public void Save(string targetDir)
+ {
+ Console.WriteLine("Dumping schemas...");
+
+ targetDir = Path.Combine(targetDir, Loader.Importer.Slug);
+
+ var bar = new ProgressBar(Schemas.Count);
+ var i = 0;
+
+ foreach (var kvp in Schemas)
+ {
+ bar.Refresh(i++, kvp.Key);
+ SaveSchema(targetDir, kvp.Key, kvp.Value);
+ }
+ }
+
+ protected void SaveSchema(string dir, string name, SchemaNode schema)
+ {
+ var invalids = Path.GetInvalidFileNameChars();
+ var fileName = string.Join("_", schema.Path.Split(invalids, StringSplitOptions.RemoveEmptyEntries)).TrimEnd('.');
+ var path = Path.Combine(dir, fileName + ".yaml");
+
+ var dirPath = Path.GetDirectoryName(path);
+ if (dirPath is not null && !Directory.Exists(dirPath))
+ {
+ Directory.CreateDirectory(dirPath);
+ }
+
+ using var writer = new StreamWriter(path);
+
+ schema.Beautify();
+
+ writer.WriteLine(SchemaNode.FormatYaml(new Dictionary()
+ {
+ ["name"] = name,
+ ["values"] = schema.Values.ToString()
+ }, schema.Types[0].GetYamlData()));
+ }
+ }
+}
\ No newline at end of file
diff --git a/Pf2eDataScrapper/Importers/Implementations/Pf2eFoundry/Pf2eFoundryImporter.cs b/Pf2eDataScrapper/Importers/Implementations/Pf2eFoundry/Pf2eFoundryImporter.cs
index 482563e..7944ad1 100644
--- a/Pf2eDataScrapper/Importers/Implementations/Pf2eFoundry/Pf2eFoundryImporter.cs
+++ b/Pf2eDataScrapper/Importers/Implementations/Pf2eFoundry/Pf2eFoundryImporter.cs
@@ -1,5 +1,6 @@
using Pf2eDataScrapper.Importers.Implementations.Pf2eFoundry.DataBuilder;
using Pf2eDataScrapper.Importers.Implementations.Pf2eFoundry.SchemaBuilder;
+using Pf2eDataScrapper.Importers.Repositories;
namespace Pf2eDataScrapper.Importers.Implementations.Pf2eFoundry
{
@@ -18,10 +19,7 @@ namespace Pf2eDataScrapper.Importers.Implementations.Pf2eFoundry
///
public override string Slug => "pf2e";
- ///
- /// Ссылка на git-репозиторий для клонирования.
- ///
- public override string GitUrl => "https://github.com/foundryvtt/pf2e.git";
+ public override AbstractImporterRepository Repository => new GitRepository(this, "https://github.com/foundryvtt/pf2e.git");
///
/// Загрузчик данных компендиума.
diff --git a/Pf2eDataScrapper/Importers/Implementations/Pf2eFoundry/SchemaBuilder/CompendiumSchemaBuilder.cs b/Pf2eDataScrapper/Importers/Implementations/Pf2eFoundry/SchemaBuilder/CompendiumSchemaBuilder.cs
index 1361f49..87befb9 100644
--- a/Pf2eDataScrapper/Importers/Implementations/Pf2eFoundry/SchemaBuilder/CompendiumSchemaBuilder.cs
+++ b/Pf2eDataScrapper/Importers/Implementations/Pf2eFoundry/SchemaBuilder/CompendiumSchemaBuilder.cs
@@ -123,7 +123,7 @@ namespace Pf2eDataScrapper.Importers.Implementations.Pf2eFoundry.SchemaBuilder
var bar = new ProgressBar(PackSchemas.Count + TypeSchemas.Count);
var i = 0;
- targetDir = Path.Combine(targetDir, "pf2e");
+ targetDir = Path.Combine(targetDir, Loader.Importer.Slug);
if (!Directory.Exists(targetDir))
{
diff --git a/Pf2eDataScrapper/Importers/Repositories/AbstractImporterRepository.cs b/Pf2eDataScrapper/Importers/Repositories/AbstractImporterRepository.cs
new file mode 100644
index 0000000..42b08a3
--- /dev/null
+++ b/Pf2eDataScrapper/Importers/Repositories/AbstractImporterRepository.cs
@@ -0,0 +1,13 @@
+namespace Pf2eDataScrapper.Importers.Repositories
+{
+ internal abstract class AbstractImporterRepository (AbstractImporter importer)
+ {
+ public readonly AbstractImporter Importer = importer;
+
+ public string RepositoryDirPath => Importer.Dir;
+
+ public DirectoryInfo RepositoryDir => new(RepositoryDirPath);
+
+ public abstract void Update();
+ }
+}
diff --git a/Pf2eDataScrapper/Importers/GitLoader.cs b/Pf2eDataScrapper/Importers/Repositories/GitRepository.cs
similarity index 64%
rename from Pf2eDataScrapper/Importers/GitLoader.cs
rename to Pf2eDataScrapper/Importers/Repositories/GitRepository.cs
index d4c3de8..45e604a 100644
--- a/Pf2eDataScrapper/Importers/GitLoader.cs
+++ b/Pf2eDataScrapper/Importers/Repositories/GitRepository.cs
@@ -1,28 +1,20 @@
-using System.Diagnostics;
+using System.Data.Common;
+using System.Diagnostics;
-namespace Pf2eDataScrapper.Importers
+namespace Pf2eDataScrapper.Importers.Repositories
{
///
/// Загрузчик данных из git-репозиториев
///
///
- internal class GitLoader(string repositoryDirPath)
+ internal class GitRepository(AbstractImporter importer, string url) : AbstractImporterRepository(importer)
{
- ///
- /// Путь к директории репозитория
- ///
- public readonly string RepositoryDirPath = repositoryDirPath;
-
- ///
- /// Директория репозитория
- ///
- public DirectoryInfo RepositoryDir = new(repositoryDirPath);
+ public readonly string Url = url;
///
/// Обновление импортёра
///
- ///
- public void UpdateImporter(AbstractImporter importer)
+ public override void Update()
{
var gitPath = Path.Combine(RepositoryDirPath, importer.Slug);
@@ -49,7 +41,7 @@ namespace Pf2eDataScrapper.Importers
{
FileName = "git",
WorkingDirectory = RepositoryDirPath,
- Arguments = $"clone {importer.GitUrl} {importer.Slug}",
+ Arguments = $"clone {Url} {Importer.Slug}",
}
};
process.Start();
diff --git a/Pf2eDataScrapper/Program.cs b/Pf2eDataScrapper/Program.cs
index 3ca6c6a..181a6d0 100644
--- a/Pf2eDataScrapper/Program.cs
+++ b/Pf2eDataScrapper/Program.cs
@@ -1,26 +1,15 @@
using Pf2eDataScrapper;
+using Pf2eDataScrapper.Importers.Implementations.Aonprd;
using Pf2eDataScrapper.Importers.Implementations.Pf2eFoundry;
EnvSettings.Load();
-
-var importer = new Pf2EFoundryImporter();
-
+var importer = new AonprdImporter();
importer.Prepare();
+importer.BuildSchemas();
-importer.Import();
/*
-try
-{
-}
-catch (Exception ex)
-{
- Console.WriteLine(ex);
- //Console.WriteLine(ex.Message);
- //Console.WriteLine(ex.InnerException);
- //Console.WriteLine(ex.StackTrace);
-}
-// importer.BuildSchemas();
-
-
+var importer = new Pf2EFoundryImporter();
+importer.Prepare();
+importer.Import();
*/
\ No newline at end of file
diff --git a/output/aonprd/action.yaml b/output/aonprd/action.yaml
new file mode 100644
index 0000000..6045dbc
--- /dev/null
+++ b/output/aonprd/action.yaml
@@ -0,0 +1,312 @@
+name: action
+values: 2818
+schema:
+ [actions]:
+ type: string
+ path: action.actions
+ is_null: true
+ values: 2276
+ different_values: 11
+ variants:
+ - "Single Action" (x765)
+ - "Two Actions" (x745)
+ - "Reaction" (x324)
+ - "Free Action" (x300)
+ - "Three Actions" (x128)
+ - "Single Action to Three Actions" (x5)
+ - "Single Action or Two Actions" (x4)
+ - "Single Action or more Actions" (x2)
+ - "Reaction or One Action" (x1)
+ - "Single Action to Two Actions" (x1)
+ - "Free Action or One Action" (x1)
+ 'category':
+ type: string
+ path: action.category
+ is_null: false
+ values: 2818
+ different_values: 1 (all same)
+ variants: "action" (x2818)
+ 'id':
+ type: string
+ path: action.id
+ is_null: false
+ values: 2818
+ different_values: 2818 (all different)
+ variants: [omitted]
+ [cost_markdown]:
+ type: string
+ path: action.cost_markdown
+ is_null: true
+ values: 14
+ different_values: 8
+ variants: [omitted]
+ [frequency]:
+ type: string
+ path: action.frequency
+ is_null: true
+ values: 1389
+ different_values: 44
+ variants: [omitted]
+ 'trait_markdown':
+ type: string
+ path: action.trait_markdown
+ is_null: false
+ values: 2818
+ different_values: 190
+ variants: [omitted]
+ 'type':
+ type: string
+ path: action.type
+ is_null: false
+ values: 2818
+ different_values: 1 (all same)
+ variants: "Action" (x2818)
+ 'url':
+ type: string
+ path: action.url
+ is_null: false
+ values: 2818
+ different_values: 2818 (all different)
+ variants: [omitted]
+ 'weakness':
+ type: object
+ path: action.weakness
+ is_null: false
+ values: 2818
+ schema:
+ [element]:
+ type: array
+ path: action.element
+ is_null: true
+ values: 1
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: action.element.[]
+ is_null: false
+ values: 1
+ different_values: 1 (all same)
+ variants: "Fire" (x1)
+ 'source_markdown':
+ type: string
+ path: action.source_markdown
+ is_null: false
+ values: 2818
+ different_values: 903
+ variants: [omitted]
+ 'speed':
+ type: object
+ path: action.speed
+ is_null: false
+ values: 2818
+ schema:
+ [legacy_id]:
+ type: array
+ path: action.legacy_id
+ is_null: true
+ values: 101
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: action.legacy_id.[]
+ is_null: false
+ values: 101
+ different_values: 101
+ variants: [omitted]
+ 'markdown':
+ type: string
+ path: action.markdown
+ is_null: false
+ values: 2818
+ different_values: 2792
+ variants: [omitted]
+ 'name':
+ type: string
+ path: action.name
+ is_null: false
+ values: 2818
+ different_values: 780
+ variants: [omitted]
+ 'primary_source_category':
+ type: string
+ path: action.primary_source_category
+ is_null: false
+ values: 2818
+ different_values: 7
+ variants:
+ - "Rulebooks" (x1827)
+ - "Adventure Paths" (x560)
+ - "Lost Omens" (x336)
+ - "Adventures" (x73)
+ - "Comics" (x11)
+ - "Blog Posts" (x9)
+ - "Society" (x2)
+ 'rarity':
+ type: string
+ path: action.rarity
+ is_null: false
+ values: 2818
+ different_values: 3
+ variants:
+ - "common" (x2808)
+ - "uncommon" (x5)
+ - "rare" (x5)
+ 'rarity_id':
+ type: integer
+ path: action.rarity_id
+ is_null: false
+ values: 2818
+ different_values: 3
+ variants:
+ - 1 (x2808)
+ - 2 (x5)
+ - 3 (x5)
+ 'release_date':
+ type: string
+ path: action.release_date
+ is_null: false
+ values: 2818
+ different_values: 70
+ variants: [omitted]
+ [remaster_id]:
+ type: array
+ path: action.remaster_id
+ is_null: true
+ values: 103
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: action.remaster_id.[]
+ is_null: false
+ values: 103
+ different_values: 102
+ variants: [omitted]
+ 'resistance':
+ type: object
+ path: action.resistance
+ is_null: false
+ values: 2818
+ schema:
+ 'search_markdown':
+ type: string
+ path: action.search_markdown
+ is_null: false
+ values: 2818
+ different_values: 2799
+ variants: [omitted]
+ [primary_source_group]:
+ type: string
+ path: action.primary_source_group
+ is_null: true
+ values: 633
+ different_values: 26
+ variants: [omitted]
+ [school]:
+ type: string
+ path: action.school
+ is_null: true
+ values: 26
+ different_values: 8
+ variants:
+ - "evocation" (x6)
+ - "transmutation" (x4)
+ - "necromancy" (x3)
+ - "enchantment" (x3)
+ - "conjuration" (x3)
+ - "divination" (x3)
+ - "abjuration" (x2)
+ - "illusion" (x2)
+ 'source':
+ type: array
+ path: action.source
+ is_null: false
+ values: 2818
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: action.source.[]
+ is_null: false
+ values: 2818
+ different_values: 108
+ variants: [omitted]
+ [requirement_markdown]:
+ type: string
+ path: action.requirement_markdown
+ is_null: true
+ values: 524
+ different_values: 451
+ variants: [omitted]
+ 'source_category':
+ type: array
+ path: action.source_category
+ is_null: false
+ values: 2818
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: action.source_category.[]
+ is_null: false
+ values: 2818
+ different_values: 7
+ variants:
+ - "Rulebooks" (x1827)
+ - "Adventure Paths" (x560)
+ - "Lost Omens" (x336)
+ - "Adventures" (x73)
+ - "Comics" (x11)
+ - "Blog Posts" (x9)
+ - "Society" (x2)
+ [source_group]:
+ type: array
+ path: action.source_group
+ is_null: true
+ values: 633
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: action.source_group.[]
+ is_null: false
+ values: 633
+ different_values: 26
+ variants: [omitted]
+ [spoilers]:
+ type: string
+ path: action.spoilers
+ is_null: true
+ values: 1
+ different_values: 1 (all same)
+ variants: "Extinction Curse" (x1)
+ [summary_markdown]:
+ type: string
+ path: action.summary_markdown
+ is_null: true
+ values: 2602
+ different_values: 2461
+ variants: [omitted]
+ [trait]:
+ type: array
+ path: action.trait
+ is_null: true
+ values: 462
+ min_count: 1
+ max_count: 7
+ value_type:
+ type: string
+ path: action.trait.[]
+ is_null: false
+ values: 938
+ different_values: 97
+ variants: [omitted]
+ [trigger_markdown]:
+ type: string
+ path: action.trigger_markdown
+ is_null: true
+ values: 528
+ different_values: 464
+ variants: [omitted]
diff --git a/output/aonprd/ancestry.yaml b/output/aonprd/ancestry.yaml
new file mode 100644
index 0000000..ec07973
--- /dev/null
+++ b/output/aonprd/ancestry.yaml
@@ -0,0 +1,415 @@
+name: ancestry
+values: 90
+schema:
+ [attribute]:
+ type: array
+ path: ancestry.attribute
+ is_null: true
+ values: 66
+ min_count: 1
+ max_count: 3
+ value_type:
+ type: string
+ path: ancestry.attribute.[]
+ is_null: false
+ values: 172
+ different_values: 8
+ variants:
+ - "Free" (x61)
+ - "Dexterity" (x27)
+ - "Constitution" (x21)
+ - "Charisma" (x19)
+ - "Wisdom" (x17)
+ - "Intelligence" (x11)
+ - "Strength" (x11)
+ - "Two free ability boosts" (x5)
+ 'category':
+ type: string
+ path: ancestry.category
+ is_null: false
+ values: 90
+ different_values: 1 (all same)
+ variants: "ancestry" (x90)
+ 'hp_raw':
+ type: string
+ path: ancestry.hp_raw
+ is_null: false
+ values: 90
+ different_values: 4
+ variants:
+ - "8" (x37)
+ - "" (x25)
+ - "6" (x19)
+ - "10" (x9)
+ 'id':
+ type: string
+ path: ancestry.id
+ is_null: false
+ values: 90
+ different_values: 90 (all different)
+ variants: [omitted]
+ 'image':
+ type: array
+ path: ancestry.image
+ is_null: false
+ values: 90
+ min_count: 1
+ max_count: 4
+ value_type:
+ type: string
+ path: ancestry.image.[]
+ is_null: false
+ values: 181
+ different_values: 160
+ variants: [omitted]
+ 'language_markdown':
+ type: string
+ path: ancestry.language_markdown
+ is_null: false
+ values: 90
+ different_values: 50
+ variants: [omitted]
+ 'source':
+ type: array
+ path: ancestry.source
+ is_null: false
+ values: 90
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: ancestry.source.[]
+ is_null: false
+ values: 90
+ different_values: 17
+ variants:
+ - "Ancestry Guide" (x14)
+ - "Player Core" (x12)
+ - "Player Core 2" (x11)
+ - "Advanced Player's Guide" (x10)
+ - "Core Rulebook" (x8)
+ - "Tian Xia Character Guide" (x7)
+ - "The Mwangi Expanse" (x6)
+ - "Howl of the Wild" (x6)
+ - "Impossible Lands" (x5)
+ - "Character Guide" (x3)
+ - "Rage of Elements" (x2)
+ - "Pathfinder #153: Life's Long Shadows" (x1)
+ - "Azarketi Ancestry Web Supplement" (x1)
+ - "Guns & Gears" (x1)
+ - "Grand Bazaar" (x1)
+ - "Book of the Dead" (x1)
+ - "Dark Archive" (x1)
+ 'source_category':
+ type: array
+ path: ancestry.source_category
+ is_null: false
+ values: 90
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: ancestry.source_category.[]
+ is_null: false
+ values: 90
+ different_values: 3
+ variants:
+ - "Rulebooks" (x52)
+ - "Lost Omens" (x37)
+ - "Adventure Paths" (x1)
+ 'source_markdown':
+ type: string
+ path: ancestry.source_markdown
+ is_null: false
+ values: 90
+ different_values: 89
+ variants: [omitted]
+ 'speed':
+ type: object
+ path: ancestry.speed
+ is_null: false
+ values: 90
+ schema:
+ [land]:
+ type: integer
+ path: ancestry.speed.land
+ is_null: true
+ values: 63
+ different_values: 3
+ variants:
+ - 25 (x55)
+ - 20 (x4)
+ - 30 (x4)
+ [max]:
+ type: integer
+ path: ancestry.speed.max
+ is_null: true
+ values: 63
+ different_values: 3
+ variants:
+ - 25 (x55)
+ - 20 (x4)
+ - 30 (x4)
+ 'speed_markdown':
+ type: string
+ path: ancestry.speed_markdown
+ is_null: false
+ values: 90
+ different_values: 4
+ variants:
+ - "25 feet" (x55)
+ - "" (x27)
+ - "20 feet" (x4)
+ - "30 feet" (x4)
+ 'summary_markdown':
+ type: string
+ path: ancestry.summary_markdown
+ is_null: false
+ values: 90
+ different_values: 90 (all different)
+ variants: [omitted]
+ 'trait':
+ type: array
+ path: ancestry.trait
+ is_null: false
+ values: 90
+ min_count: 2
+ max_count: 5
+ value_type:
+ type: string
+ path: ancestry.trait.[]
+ is_null: false
+ values: 252
+ different_values: 87
+ variants: [omitted]
+ 'trait_markdown':
+ type: string
+ path: ancestry.trait_markdown
+ is_null: false
+ values: 90
+ different_values: 90 (all different)
+ variants: [omitted]
+ 'type':
+ type: string
+ path: ancestry.type
+ is_null: false
+ values: 90
+ different_values: 3
+ variants:
+ - "Ancestry" (x64)
+ - "Versatile Heritage" (x24)
+ - "Half-Human Heritage" (x2)
+ 'weakness':
+ type: object
+ path: ancestry.weakness
+ is_null: false
+ values: 90
+ schema:
+ [attribute_flaw]:
+ type: array
+ path: ancestry.attribute_flaw
+ is_null: true
+ values: 45
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: ancestry.attribute_flaw.[]
+ is_null: false
+ values: 45
+ different_values: 7
+ variants:
+ - "Wisdom" (x11)
+ - "Strength" (x9)
+ - "Intelligence" (x9)
+ - "Charisma" (x7)
+ - "Constitution" (x7)
+ - "Dexterity" (x1)
+ - "Consitution" (x1)
+ 'url':
+ type: string
+ path: ancestry.url
+ is_null: false
+ values: 90
+ different_values: 90 (all different)
+ variants: [omitted]
+ [legacy_id]:
+ type: array
+ path: ancestry.legacy_id
+ is_null: true
+ values: 21
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: ancestry.legacy_id.[]
+ is_null: false
+ values: 21
+ different_values: 21
+ variants: [omitted]
+ 'markdown':
+ type: string
+ path: ancestry.markdown
+ is_null: false
+ values: 90
+ different_values: 90 (all different)
+ variants: [omitted]
+ 'name':
+ type: string
+ path: ancestry.name
+ is_null: false
+ values: 90
+ different_values: 73
+ variants: [omitted]
+ 'primary_source_category':
+ type: string
+ path: ancestry.primary_source_category
+ is_null: false
+ values: 90
+ different_values: 3
+ variants:
+ - "Rulebooks" (x52)
+ - "Lost Omens" (x37)
+ - "Adventure Paths" (x1)
+ 'rarity':
+ type: string
+ path: ancestry.rarity
+ is_null: false
+ values: 90
+ different_values: 3
+ variants:
+ - "uncommon" (x50)
+ - "rare" (x22)
+ - "common" (x18)
+ 'rarity_id':
+ type: integer
+ path: ancestry.rarity_id
+ is_null: false
+ values: 90
+ different_values: 3
+ variants:
+ - 2 (x50)
+ - 3 (x22)
+ - 1 (x18)
+ 'release_date':
+ type: string
+ path: ancestry.release_date
+ is_null: false
+ values: 90
+ different_values: 15
+ variants:
+ - "2021-02-24" (x15)
+ - "2023-11-15" (x12)
+ - "2024-08-01" (x11)
+ - "2020-07-30" (x10)
+ - "2019-08-01" (x8)
+ - "2024-08-28" (x7)
+ - "2021-07-07" (x6)
+ - "2024-05-29" (x6)
+ - "2022-11-16" (x5)
+ - "2019-10-16" (x3)
+ - "2021-10-13" (x2)
+ - "2023-08-02" (x2)
+ - "2020-03-26" (x1)
+ - "2022-04-27" (x1)
+ - "2022-07-27" (x1)
+ 'resistance':
+ type: object
+ path: ancestry.resistance
+ is_null: false
+ values: 90
+ schema:
+ 'search_markdown':
+ type: string
+ path: ancestry.search_markdown
+ is_null: false
+ values: 90
+ different_values: 90 (all different)
+ variants: [omitted]
+ [primary_source_group]:
+ type: string
+ path: ancestry.primary_source_group
+ is_null: true
+ values: 1
+ different_values: 1 (all same)
+ variants: "Extinction Curse" (x1)
+ [remaster_id]:
+ type: array
+ path: ancestry.remaster_id
+ is_null: true
+ values: 23
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: ancestry.remaster_id.[]
+ is_null: false
+ values: 23
+ different_values: 22
+ variants: [omitted]
+ 'size':
+ type: array
+ path: ancestry.size
+ is_null: false
+ values: 90
+ min_count: 1
+ max_count: 4
+ value_type:
+ type: string
+ path: ancestry.size.[]
+ is_null: false
+ values: 95
+ different_values: 4
+ variants:
+ - "Medium" (x68)
+ - "Small" (x22)
+ - "Large" (x3)
+ - "Tiny" (x2)
+ 'size_id':
+ type: array
+ path: ancestry.size_id
+ is_null: false
+ values: 90
+ min_count: 1
+ max_count: 4
+ value_type:
+ type: integer
+ path: ancestry.size_id.[]
+ is_null: false
+ values: 95
+ different_values: 4
+ variants:
+ - 3 (x68)
+ - 2 (x22)
+ - 4 (x3)
+ - 1 (x2)
+ [source_group]:
+ type: array
+ path: ancestry.source_group
+ is_null: true
+ values: 1
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: ancestry.source_group.[]
+ is_null: false
+ values: 1
+ different_values: 1 (all same)
+ variants: "Extinction Curse" (x1)
+ [spoilers]:
+ type: string
+ path: ancestry.spoilers
+ is_null: true
+ values: 1
+ different_values: 1 (all same)
+ variants: "Extinction Curse" (x1)
+ [vision]:
+ type: string
+ path: ancestry.vision
+ is_null: true
+ values: 50
+ different_values: 2
+ variants:
+ - "Low-Light Vision" (x33)
+ - "Darkvision" (x17)
diff --git a/output/aonprd/animal-companion-advanced.yaml b/output/aonprd/animal-companion-advanced.yaml
new file mode 100644
index 0000000..f56ee1f
--- /dev/null
+++ b/output/aonprd/animal-companion-advanced.yaml
@@ -0,0 +1,242 @@
+name: animal-companion-advanced
+values: 7
+schema:
+ 'category':
+ type: string
+ path: animal-companion-advanced.category
+ is_null: false
+ values: 7
+ different_values: 1 (all same)
+ variants: "animal-companion-advanced" (x7)
+ 'id':
+ type: string
+ path: animal-companion-advanced.id
+ is_null: false
+ values: 7
+ different_values: 7 (all different)
+ variants:
+ - "animal-companion-advanced-1" (x1)
+ - "animal-companion-advanced-2" (x1)
+ - "animal-companion-advanced-3" (x1)
+ - "animal-companion-advanced-4" (x1)
+ - "animal-companion-advanced-5" (x1)
+ - "animal-companion-advanced-7" (x1)
+ - "animal-companion-advanced-8" (x1)
+ 'legacy_id':
+ type: array
+ path: animal-companion-advanced.legacy_id
+ is_null: false
+ values: 2
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: animal-companion-advanced.legacy_id.[]
+ is_null: false
+ values: 2
+ different_values: 2
+ variants:
+ - "animal-companion-advanced-2" (x1)
+ - "animal-companion-advanced-1" (x1)
+ 'markdown':
+ type: string
+ path: animal-companion-advanced.markdown
+ is_null: false
+ values: 7
+ different_values: 7 (all different)
+ variants: [omitted]
+ 'name':
+ type: string
+ path: animal-companion-advanced.name
+ is_null: false
+ values: 7
+ different_values: 5
+ variants:
+ - "Savage" (x2)
+ - "Nimble" (x2)
+ - "Indomitable" (x1)
+ - "Genie-Touched" (x1)
+ - "Unseen" (x1)
+ 'pfs':
+ type: string
+ path: animal-companion-advanced.pfs
+ is_null: false
+ values: 7
+ different_values: 1 (all same)
+ variants: "Standard" (x7)
+ 'primary_source_category':
+ type: string
+ path: animal-companion-advanced.primary_source_category
+ is_null: false
+ values: 7
+ different_values: 2
+ variants:
+ - "Rulebooks" (x5)
+ - "Lost Omens" (x2)
+ 'rarity':
+ type: string
+ path: animal-companion-advanced.rarity
+ is_null: false
+ values: 7
+ different_values: 3
+ variants:
+ - "common" (x5)
+ - "rare" (x1)
+ - "uncommon" (x1)
+ 'rarity_id':
+ type: integer
+ path: animal-companion-advanced.rarity_id
+ is_null: false
+ values: 7
+ different_values: 3
+ variants:
+ - 1 (x5)
+ - 3 (x1)
+ - 2 (x1)
+ 'release_date':
+ type: string
+ path: animal-companion-advanced.release_date
+ is_null: false
+ values: 7
+ different_values: 5
+ variants:
+ - "2019-08-01" (x2)
+ - "2023-11-15" (x2)
+ - "2019-08-31" (x1)
+ - "2020-07-30" (x1)
+ - "2022-07-27" (x1)
+ 'resistance':
+ type: object
+ path: animal-companion-advanced.resistance
+ is_null: false
+ values: 7
+ schema:
+ 'search_markdown':
+ type: string
+ path: animal-companion-advanced.search_markdown
+ is_null: false
+ values: 7
+ different_values: 5
+ variants: [omitted]
+ [remaster_id]:
+ type: array
+ path: animal-companion-advanced.remaster_id
+ is_null: true
+ values: 2
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: animal-companion-advanced.remaster_id.[]
+ is_null: false
+ values: 2
+ different_values: 2
+ variants:
+ - "animal-companion-advanced-8" (x1)
+ - "animal-companion-advanced-7" (x1)
+ 'source':
+ type: array
+ path: animal-companion-advanced.source
+ is_null: false
+ values: 7
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: animal-companion-advanced.source.[]
+ is_null: false
+ values: 7
+ different_values: 5
+ variants:
+ - "Core Rulebook" (x2)
+ - "Player Core" (x2)
+ - "World Guide" (x1)
+ - "Legends" (x1)
+ - "Dark Archive" (x1)
+ 'source_category':
+ type: array
+ path: animal-companion-advanced.source_category
+ is_null: false
+ values: 7
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: animal-companion-advanced.source_category.[]
+ is_null: false
+ values: 7
+ different_values: 2
+ variants:
+ - "Rulebooks" (x5)
+ - "Lost Omens" (x2)
+ 'source_markdown':
+ type: string
+ path: animal-companion-advanced.source_markdown
+ is_null: false
+ values: 7
+ different_values: 5
+ variants:
+ - "[Core Rulebook](/Sources.aspx?ID=1) pg. 214 4.0" (x2)
+ - "[Player Core](/Sources.aspx?ID=216) pg. 211 2.0" (x2)
+ - "[World Guide](/Sources.aspx?ID=6) pg. 117 2.0" (x1)
+ - "[Legends](/Sources.aspx?ID=40) pg. 123" (x1)
+ - "[Dark Archive](/Sources.aspx?ID=129) pg. 65" (x1)
+ 'speed':
+ type: object
+ path: animal-companion-advanced.speed
+ is_null: false
+ values: 7
+ schema:
+ 'trait_markdown':
+ type: string
+ path: animal-companion-advanced.trait_markdown
+ is_null: false
+ values: 7
+ different_values: 3
+ variants:
+ - "" (x5)
+ - "[Rare](/Traits.aspx?ID=137)" (x1)
+ - "[Uncommon](/Traits.aspx?ID=159)" (x1)
+ 'type':
+ type: string
+ path: animal-companion-advanced.type
+ is_null: false
+ values: 7
+ different_values: 1 (all same)
+ variants: "Animal Companion Advanced Option" (x7)
+ 'url':
+ type: string
+ path: animal-companion-advanced.url
+ is_null: false
+ values: 7
+ different_values: 7 (all different)
+ variants:
+ - "/AnimalCompanions.aspx?ID=1&Advanced=true" (x1)
+ - "/AnimalCompanions.aspx?ID=2&Advanced=true" (x1)
+ - "/AnimalCompanions.aspx?ID=3&Advanced=true" (x1)
+ - "/AnimalCompanions.aspx?ID=4&Advanced=true" (x1)
+ - "/AnimalCompanions.aspx?ID=5&Advanced=true" (x1)
+ - "/AnimalCompanions.aspx?ID=7&Advanced=true" (x1)
+ - "/AnimalCompanions.aspx?ID=8&Advanced=true" (x1)
+ 'weakness':
+ type: object
+ path: animal-companion-advanced.weakness
+ is_null: false
+ values: 7
+ schema:
+ [trait]:
+ type: array
+ path: animal-companion-advanced.trait
+ is_null: true
+ values: 2
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: animal-companion-advanced.trait.[]
+ is_null: false
+ values: 2
+ different_values: 2
+ variants:
+ - "Rare" (x1)
+ - "Uncommon" (x1)
diff --git a/output/aonprd/animal-companion-specialization.yaml b/output/aonprd/animal-companion-specialization.yaml
new file mode 100644
index 0000000..c575edc
--- /dev/null
+++ b/output/aonprd/animal-companion-specialization.yaml
@@ -0,0 +1,264 @@
+name: animal-companion-specialization
+values: 17
+schema:
+ 'category':
+ type: string
+ path: animal-companion-specialization.category
+ is_null: false
+ values: 17
+ different_values: 1 (all same)
+ variants: "animal-companion-specialization" (x17)
+ 'id':
+ type: string
+ path: animal-companion-specialization.id
+ is_null: false
+ values: 17
+ different_values: 17 (all different)
+ variants:
+ - "animal-companion-specialization-1" (x1)
+ - "animal-companion-specialization-2" (x1)
+ - "animal-companion-specialization-3" (x1)
+ - "animal-companion-specialization-4" (x1)
+ - "animal-companion-specialization-5" (x1)
+ - "animal-companion-specialization-6" (x1)
+ - "animal-companion-specialization-7" (x1)
+ - "animal-companion-specialization-8" (x1)
+ - "animal-companion-specialization-9" (x1)
+ - "animal-companion-specialization-10" (x1)
+ - "animal-companion-specialization-12" (x1)
+ - "animal-companion-specialization-13" (x1)
+ - "animal-companion-specialization-14" (x1)
+ - "animal-companion-specialization-15" (x1)
+ - "animal-companion-specialization-16" (x1)
+ - "animal-companion-specialization-17" (x1)
+ - "animal-companion-specialization-18" (x1)
+ 'legacy_id':
+ type: array
+ path: animal-companion-specialization.legacy_id
+ is_null: false
+ values: 6
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: animal-companion-specialization.legacy_id.[]
+ is_null: false
+ values: 6
+ different_values: 6
+ variants:
+ - "animal-companion-specialization-1" (x1)
+ - "animal-companion-specialization-2" (x1)
+ - "animal-companion-specialization-3" (x1)
+ - "animal-companion-specialization-4" (x1)
+ - "animal-companion-specialization-5" (x1)
+ - "animal-companion-specialization-6" (x1)
+ 'markdown':
+ type: string
+ path: animal-companion-specialization.markdown
+ is_null: false
+ values: 17
+ different_values: 17 (all different)
+ variants: [omitted]
+ 'name':
+ type: string
+ path: animal-companion-specialization.name
+ is_null: false
+ values: 17
+ different_values: 11
+ variants:
+ - "Ambusher" (x2)
+ - "Bully" (x2)
+ - "Daredevil" (x2)
+ - "Racer" (x2)
+ - "Tracker" (x2)
+ - "Wrecker" (x2)
+ - "Deep Diver" (x1)
+ - "Steadfast Strider" (x1)
+ - "Wildfire Scorcher" (x1)
+ - "Wind Chaser" (x1)
+ - "Shade" (x1)
+ 'pfs':
+ type: string
+ path: animal-companion-specialization.pfs
+ is_null: false
+ values: 17
+ different_values: 1 (all same)
+ variants: "Standard" (x17)
+ 'primary_source_category':
+ type: string
+ path: animal-companion-specialization.primary_source_category
+ is_null: false
+ values: 17
+ different_values: 2
+ variants:
+ - "Rulebooks" (x13)
+ - "Lost Omens" (x4)
+ 'rarity':
+ type: string
+ path: animal-companion-specialization.rarity
+ is_null: false
+ values: 17
+ different_values: 1 (all same)
+ variants: "common" (x17)
+ 'rarity_id':
+ type: integer
+ path: animal-companion-specialization.rarity_id
+ is_null: false
+ values: 17
+ different_values: 1 (all same)
+ variants: 1 (x17)
+ 'release_date':
+ type: string
+ path: animal-companion-specialization.release_date
+ is_null: false
+ values: 17
+ different_values: 4
+ variants:
+ - "2019-08-01" (x6)
+ - "2023-11-15" (x6)
+ - "2020-07-30" (x4)
+ - "2021-09-01" (x1)
+ 'resistance':
+ type: object
+ path: animal-companion-specialization.resistance
+ is_null: false
+ values: 17
+ schema:
+ [remaster_id]:
+ type: array
+ path: animal-companion-specialization.remaster_id
+ is_null: true
+ values: 6
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: animal-companion-specialization.remaster_id.[]
+ is_null: false
+ values: 6
+ different_values: 6
+ variants:
+ - "animal-companion-specialization-13" (x1)
+ - "animal-companion-specialization-14" (x1)
+ - "animal-companion-specialization-15" (x1)
+ - "animal-companion-specialization-16" (x1)
+ - "animal-companion-specialization-17" (x1)
+ - "animal-companion-specialization-18" (x1)
+ 'search_markdown':
+ type: string
+ path: animal-companion-specialization.search_markdown
+ is_null: false
+ values: 17
+ different_values: 17 (all different)
+ variants: [omitted]
+ 'source':
+ type: array
+ path: animal-companion-specialization.source
+ is_null: false
+ values: 17
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: animal-companion-specialization.source.[]
+ is_null: false
+ values: 17
+ different_values: 4
+ variants:
+ - "Core Rulebook" (x6)
+ - "Player Core" (x6)
+ - "Legends" (x4)
+ - "Secrets of Magic" (x1)
+ 'source_category':
+ type: array
+ path: animal-companion-specialization.source_category
+ is_null: false
+ values: 17
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: animal-companion-specialization.source_category.[]
+ is_null: false
+ values: 17
+ different_values: 2
+ variants:
+ - "Rulebooks" (x13)
+ - "Lost Omens" (x4)
+ 'source_markdown':
+ type: string
+ path: animal-companion-specialization.source_markdown
+ is_null: false
+ values: 17
+ different_values: 4
+ variants:
+ - "[Core Rulebook](/Sources.aspx?ID=1) pg. 217 4.0" (x6)
+ - "[Player Core](/Sources.aspx?ID=216) pg. 211 2.0" (x6)
+ - "[Legends](/Sources.aspx?ID=40) pg. 123" (x4)
+ - "[Secrets of Magic](/Sources.aspx?ID=96) pg. 229 2.0" (x1)
+ 'speed':
+ type: object
+ path: animal-companion-specialization.speed
+ is_null: false
+ values: 17
+ schema:
+ 'summary_markdown':
+ type: string
+ path: animal-companion-specialization.summary_markdown
+ is_null: false
+ values: 17
+ different_values: 16
+ variants:
+ - "Your companion terrorizes foes with dominance displays and pushes them around the battlefield. Its proficiency ranks for Athletics and …" (x2)
+ - "In your companion's natural environment, it can use a Sneak action even if it's currently observed. Its proficiency rank in Stealth increases to …" (x1)
+ - "Your companion joins the fray with graceful leaps and dives. It gains the deny advantage ability, so it isn't flat-footed to hidden , undetected …" (x1)
+ - "Your companion races. It gains a +10-foot status bonus to its Speed, swim Speed, or fly Speed (your choice). Its proficiency in Fortitude saves …" (x1)
+ - "Your companion is an incredible tracker. It can move at full Speed while following tracks. Its proficiency rank in Survival increases to expert (or …" (x1)
+ - "Your companion smashes things. Its unarmed attacks ignore half an object's Hardness. Its Athletics proficiency increases to master, and its …" (x1)
+ - "Your companion gains a swim Speed of 30 feet or a +10-foot status bonus to its existing swim Speed and can breathe underwater if it couldn't already. …" (x1)
+ - "Your companion ignores natural difficult terrain and greater difficult terrain from sediment or stone and can move across quicksand, mud, and similar …" (x1)
+ - "Your companion gains resistance to fire equal to your level. Any creature that attempts to Grapple or Grab your companion, hits your companion …" (x1)
+ - "Your companion gains a +20-foot status bonus to its Speed or fly Speed (your choice if it has both). Its proficiency in Acrobatics increases to …" (x1)
+ - "Your companion's physical form is made, in whole or in part, of shadow. It gains darkvision , resistance 5 to all damage except force , and in …" (x1)
+ - "In your companion’s natural environment, it can use a Sneak action even if it’s currently observed . Its proficiency rank in Stealth increases …" (x1)
+ - "Your companion joins the fray with graceful leaps and dives. It gains the deny advantage ability, so it isn’t off-guard to hidden , undetected , …" (x1)
+ - "Your companion races. It gains a +10-foot status bonus to its Speed, swim Speed , or fly Speed (your choice). Its proficiency in Fortitude saves …" (x1)
+ - "Your companion is an incredible tracker. It can move at full Speed while following tracks . Its proficiency rank in Survival increases to expert …" (x1)
+ - "Your companion smashes things. Its unarmed attacks ignore half an object’s Hardness . Its Athletics proficiency increases to master, and its …" (x1)
+ 'type':
+ type: string
+ path: animal-companion-specialization.type
+ is_null: false
+ values: 17
+ different_values: 1 (all same)
+ variants: "Animal Companion Specialization" (x17)
+ 'url':
+ type: string
+ path: animal-companion-specialization.url
+ is_null: false
+ values: 17
+ different_values: 17 (all different)
+ variants:
+ - "/AnimalCompanions.aspx?ID=1&Specialized=true" (x1)
+ - "/AnimalCompanions.aspx?ID=2&Specialized=true" (x1)
+ - "/AnimalCompanions.aspx?ID=3&Specialized=true" (x1)
+ - "/AnimalCompanions.aspx?ID=4&Specialized=true" (x1)
+ - "/AnimalCompanions.aspx?ID=5&Specialized=true" (x1)
+ - "/AnimalCompanions.aspx?ID=6&Specialized=true" (x1)
+ - "/AnimalCompanions.aspx?ID=7&Specialized=true" (x1)
+ - "/AnimalCompanions.aspx?ID=8&Specialized=true" (x1)
+ - "/AnimalCompanions.aspx?ID=9&Specialized=true" (x1)
+ - "/AnimalCompanions.aspx?ID=10&Specialized=true" (x1)
+ - "/AnimalCompanions.aspx?ID=12&Specialized=true" (x1)
+ - "/AnimalCompanions.aspx?ID=13&Specialized=true" (x1)
+ - "/AnimalCompanions.aspx?ID=14&Specialized=true" (x1)
+ - "/AnimalCompanions.aspx?ID=15&Specialized=true" (x1)
+ - "/AnimalCompanions.aspx?ID=16&Specialized=true" (x1)
+ - "/AnimalCompanions.aspx?ID=17&Specialized=true" (x1)
+ - "/AnimalCompanions.aspx?ID=18&Specialized=true" (x1)
+ 'weakness':
+ type: object
+ path: animal-companion-specialization.weakness
+ is_null: false
+ values: 17
+ schema:
diff --git a/output/aonprd/animal-companion-unique.yaml b/output/aonprd/animal-companion-unique.yaml
new file mode 100644
index 0000000..a53d7d8
--- /dev/null
+++ b/output/aonprd/animal-companion-unique.yaml
@@ -0,0 +1,189 @@
+name: animal-companion-unique
+values: 1
+schema:
+ 'category':
+ type: string
+ path: animal-companion-unique.category
+ is_null: false
+ values: 1
+ different_values: 1 (all different) (all same)
+ variants: "animal-companion-unique" (x1)
+ 'id':
+ type: string
+ path: animal-companion-unique.id
+ is_null: false
+ values: 1
+ different_values: 1 (all different) (all same)
+ variants: "animal-companion-unique-1" (x1)
+ 'markdown':
+ type: string
+ path: animal-companion-unique.markdown
+ is_null: false
+ values: 1
+ different_values: 1 (all different) (all same)
+ variants: [omitted]
+ 'name':
+ type: string
+ path: animal-companion-unique.name
+ is_null: false
+ values: 1
+ different_values: 1 (all different) (all same)
+ variants: "Fiery Leopard" (x1)
+ 'pfs':
+ type: string
+ path: animal-companion-unique.pfs
+ is_null: false
+ values: 1
+ different_values: 1 (all different) (all same)
+ variants: "Limited" (x1)
+ 'primary_source_category':
+ type: string
+ path: animal-companion-unique.primary_source_category
+ is_null: false
+ values: 1
+ different_values: 1 (all different) (all same)
+ variants: "Adventures" (x1)
+ 'primary_source_group':
+ type: string
+ path: animal-companion-unique.primary_source_group
+ is_null: false
+ values: 1
+ different_values: 1 (all different) (all same)
+ variants: "The Fall of Plaguestone" (x1)
+ 'rarity':
+ type: string
+ path: animal-companion-unique.rarity
+ is_null: false
+ values: 1
+ different_values: 1 (all different) (all same)
+ variants: "unique" (x1)
+ 'rarity_id':
+ type: integer
+ path: animal-companion-unique.rarity_id
+ is_null: false
+ values: 1
+ different_values: 1 (all different) (all same)
+ variants: 4 (x1)
+ 'release_date':
+ type: string
+ path: animal-companion-unique.release_date
+ is_null: false
+ values: 1
+ different_values: 1 (all different) (all same)
+ variants: "2019-08-01" (x1)
+ 'resistance':
+ type: object
+ path: animal-companion-unique.resistance
+ is_null: false
+ values: 1
+ schema:
+ 'search_markdown':
+ type: string
+ path: animal-companion-unique.search_markdown
+ is_null: false
+ values: 1
+ different_values: 1 (all different) (all same)
+ variants: [omitted]
+ 'source':
+ type: array
+ path: animal-companion-unique.source
+ is_null: false
+ values: 1
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: animal-companion-unique.source.[]
+ is_null: false
+ values: 1
+ different_values: 1 (all different) (all same)
+ variants: "The Fall of Plaguestone" (x1)
+ 'source_category':
+ type: array
+ path: animal-companion-unique.source_category
+ is_null: false
+ values: 1
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: animal-companion-unique.source_category.[]
+ is_null: false
+ values: 1
+ different_values: 1 (all different) (all same)
+ variants: "Adventures" (x1)
+ 'source_group':
+ type: array
+ path: animal-companion-unique.source_group
+ is_null: false
+ values: 1
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: animal-companion-unique.source_group.[]
+ is_null: false
+ values: 1
+ different_values: 1 (all different) (all same)
+ variants: "The Fall of Plaguestone" (x1)
+ 'source_markdown':
+ type: string
+ path: animal-companion-unique.source_markdown
+ is_null: false
+ values: 1
+ different_values: 1 (all different) (all same)
+ variants: "[The Fall of Plaguestone](/Sources.aspx?ID=3) pg. 57" (x1)
+ 'speed':
+ type: object
+ path: animal-companion-unique.speed
+ is_null: false
+ values: 1
+ schema:
+ 'spoilers':
+ type: string
+ path: animal-companion-unique.spoilers
+ is_null: false
+ values: 1
+ different_values: 1 (all different) (all same)
+ variants: "The Fall of Plaguestone" (x1)
+ 'trait':
+ type: array
+ path: animal-companion-unique.trait
+ is_null: false
+ values: 1
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: animal-companion-unique.trait.[]
+ is_null: false
+ values: 1
+ different_values: 1 (all different) (all same)
+ variants: "Unique" (x1)
+ 'trait_markdown':
+ type: string
+ path: animal-companion-unique.trait_markdown
+ is_null: false
+ values: 1
+ different_values: 1 (all different) (all same)
+ variants: "[Unique](/Traits.aspx?ID=161)" (x1)
+ 'type':
+ type: string
+ path: animal-companion-unique.type
+ is_null: false
+ values: 1
+ different_values: 1 (all different) (all same)
+ variants: "Unique Animal Companion" (x1)
+ 'url':
+ type: string
+ path: animal-companion-unique.url
+ is_null: false
+ values: 1
+ different_values: 1 (all different) (all same)
+ variants: "/AnimalCompanions.aspx?ID=1&Unique=true" (x1)
+ 'weakness':
+ type: object
+ path: animal-companion-unique.weakness
+ is_null: false
+ values: 1
+ schema:
diff --git a/output/aonprd/animal-companion.yaml b/output/aonprd/animal-companion.yaml
new file mode 100644
index 0000000..78f1587
--- /dev/null
+++ b/output/aonprd/animal-companion.yaml
@@ -0,0 +1,599 @@
+name: animal-companion
+values: 96
+schema:
+ 'category':
+ type: string
+ path: animal-companion.category
+ is_null: false
+ values: 96
+ different_values: 1 (all same)
+ variants: "animal-companion" (x96)
+ 'charisma':
+ type: integer
+ path: animal-companion.charisma
+ is_null: false
+ values: 96
+ different_values: 3
+ variants:
+ - 0 (x85)
+ - 1 (x7)
+ - 2 (x4)
+ 'constitution':
+ type: integer
+ path: animal-companion.constitution
+ is_null: false
+ values: 96
+ different_values: 5
+ variants:
+ - 2 (x55)
+ - 1 (x25)
+ - 3 (x14)
+ - 0 (x1)
+ - 4 (x1)
+ 'dexterity':
+ type: integer
+ path: animal-companion.dexterity
+ is_null: false
+ values: 96
+ different_values: 4
+ variants:
+ - 2 (x43)
+ - 3 (x30)
+ - 1 (x21)
+ - 0 (x2)
+ 'source':
+ type: array
+ path: animal-companion.source
+ is_null: false
+ values: 96
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: animal-companion.source.[]
+ is_null: false
+ values: 96
+ different_values: 17
+ variants:
+ - "Howl of the Wild" (x19)
+ - "Player Core" (x16)
+ - "Core Rulebook" (x8)
+ - "Advanced Player's Guide" (x8)
+ - "Grand Bazaar" (x6)
+ - "Rage of Elements" (x6)
+ - "Book of the Dead" (x5)
+ - "Pathfinder #181: Zombie Feast" (x5)
+ - "Tian Xia Character Guide" (x5)
+ - "Pathfinder #177: Burning Tundra" (x4)
+ - "Pathfinder #149: Against the Scarlet Triad" (x3)
+ - "Pathfinder #154: Siege of the Dinosaurs" (x3)
+ - "Highhelm" (x3)
+ - "Treasure Vault" (x2)
+ - "Secrets of Magic" (x1)
+ - "Monsters of Myth" (x1)
+ - "Impossible Lands" (x1)
+ 'source_category':
+ type: array
+ path: animal-companion.source_category
+ is_null: false
+ values: 96
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: animal-companion.source_category.[]
+ is_null: false
+ values: 96
+ different_values: 3
+ variants:
+ - "Rulebooks" (x65)
+ - "Lost Omens" (x16)
+ - "Adventure Paths" (x15)
+ 'source_markdown':
+ type: string
+ path: animal-companion.source_markdown
+ is_null: false
+ values: 96
+ different_values: 37
+ variants: [omitted]
+ 'speed':
+ type: object
+ path: animal-companion.speed
+ is_null: false
+ values: 96
+ schema:
+ [burrow]:
+ type: integer
+ path: animal-companion.speed.burrow
+ is_null: true
+ values: 6
+ different_values: 3
+ variants:
+ - 10 (x4)
+ - 20 (x1)
+ - 15 (x1)
+ [climb]:
+ type: integer
+ path: animal-companion.speed.climb
+ is_null: true
+ values: 15
+ different_values: 5
+ variants:
+ - 20 (x6)
+ - 25 (x5)
+ - 10 (x2)
+ - 15 (x1)
+ - 30 (x1)
+ [land]:
+ type: integer
+ path: animal-companion.speed.land
+ is_null: true
+ values: 92
+ different_values: 10
+ variants:
+ - 25 (x18)
+ - 20 (x18)
+ - 35 (x13)
+ - 30 (x13)
+ - 40 (x10)
+ - 10 (x8)
+ - 15 (x6)
+ - 50 (x2)
+ - 45 (x2)
+ - 5 (x2)
+ 'max':
+ type: integer
+ path: animal-companion.speed.max
+ is_null: false
+ values: 96
+ different_values: 8
+ variants:
+ - 25 (x22)
+ - 40 (x17)
+ - 30 (x17)
+ - 35 (x14)
+ - 20 (x13)
+ - 60 (x6)
+ - 50 (x4)
+ - 45 (x3)
+ [fly]:
+ type: integer
+ path: animal-companion.speed.fly
+ is_null: true
+ values: 16
+ different_values: 6
+ variants:
+ - 60 (x6)
+ - 30 (x5)
+ - 50 (x2)
+ - 45 (x1)
+ - 20 (x1)
+ - 40 (x1)
+ [swim]:
+ type: integer
+ path: animal-companion.speed.swim
+ is_null: true
+ values: 20
+ different_values: 6
+ variants:
+ - 40 (x6)
+ - 20 (x5)
+ - 25 (x5)
+ - 15 (x2)
+ - 35 (x1)
+ - 10 (x1)
+ 'speed_markdown':
+ type: string
+ path: animal-companion.speed_markdown
+ is_null: false
+ values: 96
+ different_values: 37
+ variants: [omitted]
+ 'strength':
+ type: integer
+ path: animal-companion.strength
+ is_null: false
+ values: 96
+ different_values: 4
+ variants:
+ - 2 (x49)
+ - 3 (x45)
+ - -5 (x1)
+ - 1 (x1)
+ 'summary_markdown':
+ type: string
+ path: animal-companion.summary_markdown
+ is_null: false
+ values: 96
+ different_values: 83
+ variants: [omitted]
+ [element]:
+ type: array
+ path: animal-companion.element
+ is_null: true
+ values: 6
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: animal-companion.element.[]
+ is_null: false
+ values: 6
+ different_values: 6
+ variants:
+ - "Air" (x1)
+ - "Earth" (x1)
+ - "Fire" (x1)
+ - "Metal" (x1)
+ - "Water" (x1)
+ - "Wood" (x1)
+ 'hp_raw':
+ type: string
+ path: animal-companion.hp_raw
+ is_null: false
+ values: 96
+ different_values: 4
+ variants:
+ - "8" (x39)
+ - "6" (x35)
+ - "4" (x19)
+ - "10" (x3)
+ 'id':
+ type: string
+ path: animal-companion.id
+ is_null: false
+ values: 96
+ different_values: 96 (all different)
+ variants: [omitted]
+ 'intelligence':
+ type: integer
+ path: animal-companion.intelligence
+ is_null: false
+ values: 96
+ different_values: 3
+ variants:
+ - -4 (x87)
+ - -5 (x8)
+ - -3 (x1)
+ 'skill_markdown':
+ type: string
+ path: animal-companion.skill_markdown
+ is_null: false
+ values: 96
+ different_values: 11
+ variants:
+ - "[Stealth](/Skills.aspx?ID=15)" (x24)
+ - "[Survival](/Skills.aspx?ID=16)" (x21)
+ - "[Intimidation](/Skills.aspx?ID=7)" (x14)
+ - "[Survival](/Skills.aspx?ID=49)" (x12)
+ - "none (mindless)" (x8)
+ - "[Stealth](/Skills.aspx?ID=48)" (x8)
+ - "[Athletics](/Skills.aspx?ID=3)" (x3)
+ - "[Intimidation](/Skills.aspx?ID=40)" (x3)
+ - "[Thievery](/Skills.aspx?ID=17)" (x1)
+ - "[Acrobatics](/Skills.aspx?ID=1)" (x1)
+ - "[Performance](/Skills.aspx?ID=45)" (x1)
+ 'trait_markdown':
+ type: string
+ path: animal-companion.trait_markdown
+ is_null: false
+ values: 96
+ different_values: 23
+ variants: [omitted]
+ 'type':
+ type: string
+ path: animal-companion.type
+ is_null: false
+ values: 96
+ different_values: 1 (all same)
+ variants: "Animal Companion" (x96)
+ 'url':
+ type: string
+ path: animal-companion.url
+ is_null: false
+ values: 96
+ different_values: 96 (all different)
+ variants: [omitted]
+ 'weakness':
+ type: object
+ path: animal-companion.weakness
+ is_null: false
+ values: 96
+ schema:
+ 'wisdom':
+ type: integer
+ path: animal-companion.wisdom
+ is_null: false
+ values: 96
+ different_values: 3
+ variants:
+ - 1 (x63)
+ - 2 (x24)
+ - 0 (x9)
+ [legacy_id]:
+ type: array
+ path: animal-companion.legacy_id
+ is_null: true
+ values: 16
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: animal-companion.legacy_id.[]
+ is_null: false
+ values: 16
+ different_values: 16
+ variants:
+ - "animal-companion-16" (x1)
+ - "animal-companion-17" (x1)
+ - "animal-companion-1" (x1)
+ - "animal-companion-18" (x1)
+ - "animal-companion-2" (x1)
+ - "animal-companion-3" (x1)
+ - "animal-companion-19" (x1)
+ - "animal-companion-4" (x1)
+ - "animal-companion-20" (x1)
+ - "animal-companion-5" (x1)
+ - "animal-companion-6" (x1)
+ - "animal-companion-21" (x1)
+ - "animal-companion-22" (x1)
+ - "animal-companion-23" (x1)
+ - "animal-companion-7" (x1)
+ - "animal-companion-8" (x1)
+ 'level':
+ type: integer
+ path: animal-companion.level
+ is_null: false
+ values: 96
+ different_values: 5
+ variants:
+ - 1 (x86)
+ - 14 (x4)
+ - 6 (x3)
+ - 4 (x2)
+ - 16 (x1)
+ 'markdown':
+ type: string
+ path: animal-companion.markdown
+ is_null: false
+ values: 96
+ different_values: 96 (all different)
+ variants: [omitted]
+ 'mount':
+ type: boolean
+ path: animal-companion.mount
+ is_null: false
+ values: 96
+ different_values: 2
+ variants:
+ - False (x63)
+ - True (x33)
+ 'name':
+ type: string
+ path: animal-companion.name
+ is_null: false
+ values: 96
+ different_values: 80
+ variants: [omitted]
+ 'pfs':
+ type: string
+ path: animal-companion.pfs
+ is_null: false
+ values: 96
+ different_values: 2
+ variants:
+ - "Standard" (x81)
+ - "Limited" (x15)
+ 'primary_source_category':
+ type: string
+ path: animal-companion.primary_source_category
+ is_null: false
+ values: 96
+ different_values: 3
+ variants:
+ - "Rulebooks" (x65)
+ - "Lost Omens" (x16)
+ - "Adventure Paths" (x15)
+ 'resistance':
+ type: object
+ path: animal-companion.resistance
+ is_null: false
+ values: 96
+ schema:
+ 'search_markdown':
+ type: string
+ path: animal-companion.search_markdown
+ is_null: false
+ values: 96
+ different_values: 96 (all different)
+ variants: [omitted]
+ [primary_source_group]:
+ type: string
+ path: animal-companion.primary_source_group
+ is_null: true
+ values: 15
+ different_values: 4
+ variants:
+ - "Blood Lords" (x5)
+ - "Quest for the Frozen Flame" (x4)
+ - "Age of Ashes" (x3)
+ - "Extinction Curse" (x3)
+ 'rarity':
+ type: string
+ path: animal-companion.rarity
+ is_null: false
+ values: 96
+ different_values: 3
+ variants:
+ - "common" (x60)
+ - "uncommon" (x34)
+ - "rare" (x2)
+ 'rarity_id':
+ type: integer
+ path: animal-companion.rarity_id
+ is_null: false
+ values: 96
+ different_values: 3
+ variants:
+ - 1 (x60)
+ - 2 (x34)
+ - 3 (x2)
+ 'release_date':
+ type: string
+ path: animal-companion.release_date
+ is_null: false
+ values: 96
+ different_values: 17
+ variants:
+ - "2024-05-29" (x19)
+ - "2023-11-15" (x16)
+ - "2019-08-01" (x8)
+ - "2020-07-30" (x8)
+ - "2021-10-13" (x6)
+ - "2023-08-02" (x6)
+ - "2022-04-27" (x5)
+ - "2022-07-27" (x5)
+ - "2024-08-28" (x5)
+ - "2022-03-30" (x4)
+ - "2019-11-13" (x3)
+ - "2020-04-29" (x3)
+ - "2023-06-28" (x3)
+ - "2023-02-22" (x2)
+ - "2021-09-01" (x1)
+ - "2021-12-22" (x1)
+ - "2022-11-16" (x1)
+ 'sense_markdown':
+ type: string
+ path: animal-companion.sense_markdown
+ is_null: false
+ values: 96
+ different_values: 27
+ variants: [omitted]
+ [remaster_id]:
+ type: array
+ path: animal-companion.remaster_id
+ is_null: true
+ values: 16
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: animal-companion.remaster_id.[]
+ is_null: false
+ values: 16
+ different_values: 16
+ variants:
+ - "animal-companion-68" (x1)
+ - "animal-companion-70" (x1)
+ - "animal-companion-71" (x1)
+ - "animal-companion-73" (x1)
+ - "animal-companion-75" (x1)
+ - "animal-companion-76" (x1)
+ - "animal-companion-80" (x1)
+ - "animal-companion-83" (x1)
+ - "animal-companion-66" (x1)
+ - "animal-companion-67" (x1)
+ - "animal-companion-69" (x1)
+ - "animal-companion-72" (x1)
+ - "animal-companion-74" (x1)
+ - "animal-companion-77" (x1)
+ - "animal-companion-78" (x1)
+ - "animal-companion-79" (x1)
+ 'size':
+ type: array
+ path: animal-companion.size
+ is_null: false
+ values: 96
+ min_count: 1
+ max_count: 2
+ value_type:
+ type: string
+ path: animal-companion.size.[]
+ is_null: false
+ values: 112
+ different_values: 4
+ variants:
+ - "Small" (x59)
+ - "Large" (x30)
+ - "Medium" (x22)
+ - "Huge" (x1)
+ 'size_id':
+ type: array
+ path: animal-companion.size_id
+ is_null: false
+ values: 96
+ min_count: 1
+ max_count: 2
+ value_type:
+ type: integer
+ path: animal-companion.size_id.[]
+ is_null: false
+ values: 112
+ different_values: 4
+ variants:
+ - 2 (x59)
+ - 4 (x30)
+ - 3 (x22)
+ - 5 (x1)
+ [source_group]:
+ type: array
+ path: animal-companion.source_group
+ is_null: true
+ values: 15
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: animal-companion.source_group.[]
+ is_null: false
+ values: 15
+ different_values: 4
+ variants:
+ - "Blood Lords" (x5)
+ - "Quest for the Frozen Flame" (x4)
+ - "Age of Ashes" (x3)
+ - "Extinction Curse" (x3)
+ [spoilers]:
+ type: string
+ path: animal-companion.spoilers
+ is_null: true
+ values: 12
+ different_values: 3
+ variants:
+ - "Blood Lords" (x5)
+ - "Quest for the Frozen Flame" (x4)
+ - "Extinction Curse" (x3)
+ [trait]:
+ type: array
+ path: animal-companion.trait
+ is_null: true
+ values: 92
+ min_count: 1
+ max_count: 5
+ value_type:
+ type: string
+ path: animal-companion.trait.[]
+ is_null: false
+ values: 240
+ different_values: 20
+ variants:
+ - "Minion" (x91)
+ - "Animal" (x68)
+ - "Uncommon" (x34)
+ - "Undead" (x10)
+ - "Mindless" (x8)
+ - "Elemental" (x6)
+ - "Aquatic" (x4)
+ - "Plant" (x3)
+ - "Dragon" (x2)
+ - "Amphibious" (x2)
+ - "Beast" (x2)
+ - "Rare" (x2)
+ - "Incorporeal" (x1)
+ - "Air" (x1)
+ - "Earth" (x1)
+ - "Fire" (x1)
+ - "Metal" (x1)
+ - "Water" (x1)
+ - "Wood" (x1)
+ - "Fungus" (x1)
diff --git a/output/aonprd/apparition.yaml b/output/aonprd/apparition.yaml
new file mode 100644
index 0000000..6238ad4
--- /dev/null
+++ b/output/aonprd/apparition.yaml
@@ -0,0 +1,232 @@
+name: apparition
+values: 11
+schema:
+ 'category':
+ type: string
+ path: apparition.category
+ is_null: false
+ values: 11
+ different_values: 1 (all same)
+ variants: "apparition" (x11)
+ 'id':
+ type: string
+ path: apparition.id
+ is_null: false
+ values: 11
+ different_values: 11 (all different)
+ variants:
+ - "apparition-3" (x1)
+ - "apparition-4" (x1)
+ - "apparition-5" (x1)
+ - "apparition-6" (x1)
+ - "apparition-7" (x1)
+ - "apparition-8" (x1)
+ - "apparition-9" (x1)
+ - "apparition-10" (x1)
+ - "apparition-11" (x1)
+ - "apparition-12" (x1)
+ - "apparition-13" (x1)
+ 'markdown':
+ type: string
+ path: apparition.markdown
+ is_null: false
+ values: 11
+ different_values: 11 (all different)
+ variants: [omitted]
+ 'name':
+ type: string
+ path: apparition.name
+ is_null: false
+ values: 11
+ different_values: 11 (all different)
+ variants:
+ - "Crafter in the Vault" (x1)
+ - "Custodian of Groves and Gardens" (x1)
+ - "Echo of Lost Moments" (x1)
+ - "Impostor in Hidden Places" (x1)
+ - "Lurker in Devouring Dark" (x1)
+ - "Monarch of the Fey Courts" (x1)
+ - "Reveler in Lost Glee" (x1)
+ - "Stalker in Darkened Boughs" (x1)
+ - "Steward of Stone and Fire" (x1)
+ - "Vanguard of Roaring Waters" (x1)
+ - "Witness to Ancient Battles" (x1)
+ 'pfs':
+ type: string
+ path: apparition.pfs
+ is_null: false
+ values: 11
+ different_values: 1 (all same)
+ variants: "Standard" (x11)
+ 'primary_source_category':
+ type: string
+ path: apparition.primary_source_category
+ is_null: false
+ values: 11
+ different_values: 1 (all same)
+ variants: "Rulebooks" (x11)
+ 'rarity':
+ type: string
+ path: apparition.rarity
+ is_null: false
+ values: 11
+ different_values: 1 (all same)
+ variants: "common" (x11)
+ 'rarity_id':
+ type: integer
+ path: apparition.rarity_id
+ is_null: false
+ values: 11
+ different_values: 1 (all same)
+ variants: 1 (x11)
+ 'release_date':
+ type: string
+ path: apparition.release_date
+ is_null: false
+ values: 11
+ different_values: 1 (all same)
+ variants: "2024-10-30" (x11)
+ 'resistance':
+ type: object
+ path: apparition.resistance
+ is_null: false
+ values: 11
+ schema:
+ 'search_markdown':
+ type: string
+ path: apparition.search_markdown
+ is_null: false
+ values: 11
+ different_values: 11 (all different)
+ variants: [omitted]
+ 'skill_markdown':
+ type: string
+ path: apparition.skill_markdown
+ is_null: false
+ values: 11
+ different_values: 11 (all different)
+ variants:
+ - "Architecture Lore, Engineering Lore" (x1)
+ - "Farming Lore, Herbalism Lore" (x1)
+ - "Fortune-Telling Lore, Genealogy Lore" (x1)
+ - "Fortune-Telling Lore, Underworld Lore" (x1)
+ - "Ocean Lore, Sailing Lore" (x1)
+ - "Art Lore, Fey Lore" (x1)
+ - "Circus Lore, Fortune-Telling Lore" (x1)
+ - "Forest Lore, Hunting Lore" (x1)
+ - "Mountain Lore, Volcano Lore" (x1)
+ - "Mountain Lore, River Lore" (x1)
+ - "Battlegrounds Lore, Heraldry Lore" (x1)
+ 'source':
+ type: array
+ path: apparition.source
+ is_null: false
+ values: 11
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: apparition.source.[]
+ is_null: false
+ values: 11
+ different_values: 1 (all same)
+ variants: "War of Immortals" (x11)
+ 'source_category':
+ type: array
+ path: apparition.source_category
+ is_null: false
+ values: 11
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: apparition.source_category.[]
+ is_null: false
+ values: 11
+ different_values: 1 (all same)
+ variants: "Rulebooks" (x11)
+ 'source_markdown':
+ type: string
+ path: apparition.source_markdown
+ is_null: false
+ values: 11
+ different_values: 5
+ variants:
+ - "[War of Immortals](/Sources.aspx?ID=232) pg. 18" (x3)
+ - "[War of Immortals](/Sources.aspx?ID=232) pg. 19" (x3)
+ - "[War of Immortals](/Sources.aspx?ID=232) pg. 20" (x2)
+ - "[War of Immortals](/Sources.aspx?ID=232) pg. 21" (x2)
+ - "[War of Immortals](/Sources.aspx?ID=232) pg. 17" (x1)
+ 'speed':
+ type: object
+ path: apparition.speed
+ is_null: false
+ values: 11
+ schema:
+ 'spell_markdown':
+ type: string
+ path: apparition.spell_markdown
+ is_null: false
+ values: 11
+ different_values: 11 (all different)
+ variants:
+ - "[Beheading Buzz Saw](/Spells.aspx?ID=1365) [Creation](/Spells.aspx?ID=1477) [Ferrous Form](/Spells.aspx?ID=1369) [Ghostly Weapon](/Spells.aspx?ID=1544) [Impaling Spike](/Spells.aspx?ID=1571) [Knock](/Spells.aspx?ID=1581) [Mending](/Spells.aspx?ID=1597) [Resplendent Mansion](/Spells.aspx?ID=2018) [Sigil](/Spells.aspx?ID=1673) [Wall of Metal](/Spells.aspx?ID=1379)" (x1)
+ - "[Field of Life](/Spells.aspx?ID=1526) [Gentle Breeze](/Spells.aspx?ID=1316) [Lifewood Cage](/Spells.aspx?ID=2006) [Moment of Renewal](/Spells.aspx?ID=1607) [Nature’s Enmity](/Spells.aspx?ID=2010) [Peaceful Bubble](/Spells.aspx?ID=1624) [Protector Tree](/Spells.aspx?ID=2015) [Safe Passage](/Spells.aspx?ID=1659) [Tangle Vine](/Spells.aspx?ID=1713) [Truespeech](/Spells.aspx?ID=1728)" (x1)
+ - "[Curse of Lost Time](/Spells.aspx?ID=1985) [Déjà Vu](/Spells.aspx?ID=1986) [Dispel Magic](/Spells.aspx?ID=1493) [Figment](/Spells.aspx?ID=1528) [Foresight](/Spells.aspx?ID=1537) [Illusory Scene](/Spells.aspx?ID=1570) [Phantasmal Calamity](/Spells.aspx?ID=1630) [Quandary](/Spells.aspx?ID=1644) [Retrocognition](/Spells.aspx?ID=1652) [Vision of Death](/Spells.aspx?ID=1742)" (x1)
+ - "[Disappearance](/Spells.aspx?ID=1490) [Ill Omen](/Spells.aspx?ID=1566) [Invisibility](/Spells.aspx?ID=1577) [Liminal Doorway](/Spells.aspx?ID=1587) [Mislead](/Spells.aspx?ID=1605) [Phantasmagoria](/Spells.aspx?ID=1629) [Planar Palace](/Spells.aspx?ID=1634) [Strange Geometry](/Spells.aspx?ID=2032) [Telekinetic Hand](/Spells.aspx?ID=1715) [Veil of Privacy](/Spells.aspx?ID=1739)" (x1)
+ - "[Acid Grip](/Spells.aspx?ID=1436) [Aqueous Orb](/Spells.aspx?ID=1443) [Arctic Rift](/Spells.aspx?ID=1444) [Caustic Blast](/Spells.aspx?ID=1461) [Frost Pillar](/Spells.aspx?ID=1389) [Grasp of the Deep](/Spells.aspx?ID=1390) [Grim Tendrils](/Spells.aspx?ID=1548) [Hungry Depths](/Spells.aspx?ID=1391) [Implosion](/Spells.aspx?ID=1572) [Wall of Ice](/Spells.aspx?ID=1750)" (x1)
+ - "[Charm](/Spells.aspx?ID=1463) [Create Food](/Spells.aspx?ID=1475) [Dominate](/Spells.aspx?ID=1501) [Enthrall](/Spells.aspx?ID=1516) [Hallucination](/Spells.aspx?ID=1551) [Mask of Terror](/Spells.aspx?ID=1595) [Suggestion](/Spells.aspx?ID=1693) [Tangle Vine](/Spells.aspx?ID=1713) [Uncontrollable Dance](/Spells.aspx?ID=1730) [Unfathomable Song](/Spells.aspx?ID=1731)" (x1)
+ - "[Confusion](/Spells.aspx?ID=1471) [Dizzying Colors](/Spells.aspx?ID=1500) [Hypnotize](/Spells.aspx?ID=1564) [Illusory Scene](/Spells.aspx?ID=1570) [Laughing Fit](/Spells.aspx?ID=1583) [Prestidigitation](/Spells.aspx?ID=1639) [Quandary](/Spells.aspx?ID=1644) [Vibrant Pattern](/Spells.aspx?ID=1741) [Wails of the Damned](/Spells.aspx?ID=1747) [Warp Mind](/Spells.aspx?ID=1754)" (x1)
+ - "[Bestial Curse](/Spells.aspx?ID=1966) [Gouging Claw](/Spells.aspx?ID=1546) [Monstrosity Form](/Spells.aspx?ID=1608) [Moon Frenzy](/Spells.aspx?ID=1609) [Runic Body](/Spells.aspx?ID=1657) [Tangling Creepers](/Spells.aspx?ID=1714) [Unfettered Pack](/Spells.aspx?ID=1733) [Vomit Swarm](/Spells.aspx?ID=2041) [Wall of Thorns](/Spells.aspx?ID=1752) [Wrathful Storm](/Spells.aspx?ID=1759)" (x1)
+ - "[Earthquake](/Spells.aspx?ID=1507) [Exploding Earth](/Spells.aspx?ID=1331) [Falling Stars](/Spells.aspx?ID=1521) [Fireball](/Spells.aspx?ID=1530) [Ignition](/Spells.aspx?ID=1565) [Interposing Earth](/Spells.aspx?ID=1337) [Petrify](/Spells.aspx?ID=1628) [Volcanic Eruption](/Spells.aspx?ID=1746) [Wall of Fire](/Spells.aspx?ID=1748) [Wall of Stone](/Spells.aspx?ID=1751)" (x1)
+ - "[Control Water](/Spells.aspx?ID=1473) [Crashing Wave](/Spells.aspx?ID=1984) [Dancing Fountain](/Spells.aspx?ID=1385) [Hydraulic Push](/Spells.aspx?ID=1561) [Hydraulic Torrent](/Spells.aspx?ID=1562) [Mist](/Spells.aspx?ID=1606) [Personal Ocean](/Spells.aspx?ID=1393) [Rousing Splash](/Spells.aspx?ID=1395) [Whirlpool](/Spells.aspx?ID=1398) [Wrathful Storm](/Spells.aspx?ID=1759)" (x1)
+ - "[Canticle of Everlasting Grief](/Spells.aspx?ID=1459) [Enlarge](/Spells.aspx?ID=1514) [Ghostly Weapon](/Spells.aspx?ID=1544) [Invoke Spirits](/Spells.aspx?ID=1578) [Phantasmal Calamity](/Spells.aspx?ID=1630) [Shield](/Spells.aspx?ID=1671) [Sure Strike](/Spells.aspx?ID=1709) [True Target](/Spells.aspx?ID=1726) [Weapon of Judgment](/Spells.aspx?ID=2044) [Weapon Storm](/Spells.aspx?ID=1758)" (x1)
+ 'summary_markdown':
+ type: string
+ path: apparition.summary_markdown
+ is_null: false
+ values: 11
+ different_values: 11 (all different)
+ variants:
+ - "Crafters in the vault are found in dungeons, forges, or other places where creation and injury occur concurrently. They enjoy partnering with …" (x1)
+ - "Custodians of groves and gardens frequent tended greenery and farmlands cared for by loving stewards, and other places of reflection and restoration …" (x1)
+ - "Echoes of lost moments are apparitions born from memories that everyone has forgotten, often arising from fragmented pieces of magic and memory left …" (x1)
+ - "Impostors in hidden places whisper in quiet corners where mortal voices rarely resound, hoarding secrets and pondering unknowable truths. They often …" (x1)
+ - "Lurkers in devouring dark are most often near old shipwrecks, deadly icebergs, and other places where ice and deep water are most prevalent. In …" (x1)
+ - "Monarchs of the fey courts make their homes near places with strong ties to the First World , or in places where nymphs once held sway. They are …" (x1)
+ - "Revelers in lost glee are twisted apparitions that arise in desolate and abandoned places where people once found great joy. They take immense mirth …" (x1)
+ - "Stalkers in darkened boughs make their homes in ancient forests and jungles unfriendly to humanoids and others who would exert control or influence …" (x1)
+ - "Stewards of stone and fire linger near volcanoes and deep places near the heart of the earth, hot springs where the water is too scorchingly hot to …" (x1)
+ - "Vanguards of roaring waters are found where rivers carve their way through mountains, creating fearsome rapids. They can also be found near bays …" (x1)
+ - "Witnesses to ancient battles may be the lingering remnants of soldiers who never returned from their last deployment or the restless souls of …" (x1)
+ 'type':
+ type: string
+ path: apparition.type
+ is_null: false
+ values: 11
+ different_values: 1 (all same)
+ variants: "Animist Apparition" (x11)
+ 'url':
+ type: string
+ path: apparition.url
+ is_null: false
+ values: 11
+ different_values: 11 (all different)
+ variants:
+ - "/Apparitions.aspx?ID=3" (x1)
+ - "/Apparitions.aspx?ID=4" (x1)
+ - "/Apparitions.aspx?ID=5" (x1)
+ - "/Apparitions.aspx?ID=6" (x1)
+ - "/Apparitions.aspx?ID=7" (x1)
+ - "/Apparitions.aspx?ID=8" (x1)
+ - "/Apparitions.aspx?ID=9" (x1)
+ - "/Apparitions.aspx?ID=10" (x1)
+ - "/Apparitions.aspx?ID=11" (x1)
+ - "/Apparitions.aspx?ID=12" (x1)
+ - "/Apparitions.aspx?ID=13" (x1)
+ 'weakness':
+ type: object
+ path: apparition.weakness
+ is_null: false
+ values: 11
+ schema:
diff --git a/output/aonprd/arcane-school.yaml b/output/aonprd/arcane-school.yaml
new file mode 100644
index 0000000..6b72d95
--- /dev/null
+++ b/output/aonprd/arcane-school.yaml
@@ -0,0 +1,293 @@
+name: arcane-school
+values: 20
+schema:
+ 'category':
+ type: string
+ path: arcane-school.category
+ is_null: false
+ values: 20
+ different_values: 1 (all same)
+ variants: "arcane-school" (x20)
+ 'id':
+ type: string
+ path: arcane-school.id
+ is_null: false
+ values: 20
+ different_values: 20 (all different)
+ variants:
+ - "arcane-school-1" (x1)
+ - "arcane-school-2" (x1)
+ - "arcane-school-3" (x1)
+ - "arcane-school-4" (x1)
+ - "arcane-school-5" (x1)
+ - "arcane-school-6" (x1)
+ - "arcane-school-7" (x1)
+ - "arcane-school-8" (x1)
+ - "arcane-school-9" (x1)
+ - "arcane-school-16" (x1)
+ - "arcane-school-17" (x1)
+ - "arcane-school-18" (x1)
+ - "arcane-school-19" (x1)
+ - "arcane-school-20" (x1)
+ - "arcane-school-21" (x1)
+ - "arcane-school-22" (x1)
+ - "arcane-school-23" (x1)
+ - "arcane-school-24" (x1)
+ - "arcane-school-25" (x1)
+ - "arcane-school-26" (x1)
+ 'markdown':
+ type: string
+ path: arcane-school.markdown
+ is_null: false
+ values: 20
+ different_values: 20 (all different)
+ variants: [omitted]
+ 'name':
+ type: string
+ path: arcane-school.name
+ is_null: false
+ values: 20
+ different_values: 20 (all different)
+ variants:
+ - "Abjuration" (x1)
+ - "Conjuration" (x1)
+ - "Divination" (x1)
+ - "Enchantment" (x1)
+ - "Evocation" (x1)
+ - "Illusion" (x1)
+ - "Necromancy" (x1)
+ - "Transmutation" (x1)
+ - "Universalist" (x1)
+ - "School of Ars Grammatica" (x1)
+ - "School of the Boundary" (x1)
+ - "School of Civic Wizardry" (x1)
+ - "School of Mentalism" (x1)
+ - "School of Protean Form" (x1)
+ - "School of Unified Magical Theory" (x1)
+ - "School of Battle Magic" (x1)
+ - "Red Mantis Magic School" (x1)
+ - "School of Rooted Wisdom" (x1)
+ - "School of Thassilonian Rune Magic" (x1)
+ - "School ofthe Reclamation" (x1)
+ 'pfs':
+ type: string
+ path: arcane-school.pfs
+ is_null: false
+ values: 20
+ different_values: 2
+ variants:
+ - "Standard" (x19)
+ - "Limited" (x1)
+ 'primary_source_category':
+ type: string
+ path: arcane-school.primary_source_category
+ is_null: false
+ values: 20
+ different_values: 3
+ variants:
+ - "Rulebooks" (x16)
+ - "Lost Omens" (x3)
+ - "Adventures" (x1)
+ 'rarity':
+ type: string
+ path: arcane-school.rarity
+ is_null: false
+ values: 20
+ different_values: 1 (all same)
+ variants: "common" (x20)
+ 'rarity_id':
+ type: integer
+ path: arcane-school.rarity_id
+ is_null: false
+ values: 20
+ different_values: 1 (all same)
+ variants: 1 (x20)
+ 'release_date':
+ type: string
+ path: arcane-school.release_date
+ is_null: false
+ values: 20
+ different_values: 4
+ variants:
+ - "2019-08-01" (x9)
+ - "2023-11-15" (x7)
+ - "2025-02-26" (x3)
+ - "2024-07-31" (x1)
+ 'resistance':
+ type: object
+ path: arcane-school.resistance
+ is_null: false
+ values: 20
+ schema:
+ 'search_markdown':
+ type: string
+ path: arcane-school.search_markdown
+ is_null: false
+ values: 20
+ different_values: 20 (all different)
+ variants: [omitted]
+ 'source':
+ type: array
+ path: arcane-school.source
+ is_null: false
+ values: 20
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: arcane-school.source.[]
+ is_null: false
+ values: 20
+ different_values: 4
+ variants:
+ - "Core Rulebook" (x9)
+ - "Player Core" (x7)
+ - "Rival Academies" (x3)
+ - "Prey for Death" (x1)
+ 'source_category':
+ type: array
+ path: arcane-school.source_category
+ is_null: false
+ values: 20
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: arcane-school.source_category.[]
+ is_null: false
+ values: 20
+ different_values: 3
+ variants:
+ - "Rulebooks" (x16)
+ - "Lost Omens" (x3)
+ - "Adventures" (x1)
+ 'source_markdown':
+ type: string
+ path: arcane-school.source_markdown
+ is_null: false
+ values: 20
+ different_values: 10
+ variants:
+ - "[Core Rulebook](/Sources.aspx?ID=1) pg. 208 4.0" (x6)
+ - "[Player Core](/Sources.aspx?ID=216) pg. 199 2.0" (x3)
+ - "[Player Core](/Sources.aspx?ID=216) pg. 200 2.0" (x3)
+ - "[Core Rulebook](/Sources.aspx?ID=1) pg. 207 4.0" (x2)
+ - "[Core Rulebook](/Sources.aspx?ID=1) pg. 210 4.0" (x1)
+ - "[Player Core](/Sources.aspx?ID=216) pg. 198 2.0" (x1)
+ - "[Prey for Death](/Sources.aspx?ID=231) pg. 99" (x1)
+ - "[Rival Academies](/Sources.aspx?ID=235) pg. 68" (x1)
+ - "[Rival Academies](/Sources.aspx?ID=235) pg. 114" (x1)
+ - "[Rival Academies](/Sources.aspx?ID=235) pg. 32" (x1)
+ 'speed':
+ type: object
+ path: arcane-school.speed
+ is_null: false
+ values: 20
+ schema:
+ 'spell_markdown':
+ type: string
+ path: arcane-school.spell_markdown
+ is_null: false
+ values: 20
+ different_values: 12
+ variants:
+ - "" (x9)
+ - "[Command](/Spells.aspx?ID=1470), [Disguise Magic](/Spells.aspx?ID=1491), [Message](/Spells.aspx?ID=1598), [Protective Wards](/Spells.aspx?ID=1894), [Runic Body](/Spells.aspx?ID=1657), [Runic Weapon](/Spells.aspx?ID=1658), [Sigil](/Spells.aspx?ID=1673), [Dispel Magic](/Spells.aspx?ID=1493), [Translate](/Spells.aspx?ID=1723), [Enthrall](/Spells.aspx?ID=1516), [Veil of Privacy](/Spells.aspx?ID=1739), [Dispelling Globe](/Spells.aspx?ID=1494), [Rune of Observation](/Spells.aspx?ID=1895), [Suggestion](/Spells.aspx?ID=1693), [Sending](/Spells.aspx?ID=1665), [Truespeech](/Spells.aspx?ID=1728), [Repulsion](/Spells.aspx?ID=1650), [Planar Seal](/Spells.aspx?ID=1635), [Quandary](/Spells.aspx?ID=1644), [Unrelenting Observation](/Spells.aspx?ID=1734), [Detonate Magic](/Spells.aspx?ID=1488), [Contingency](/Spells.aspx?ID=1472), [Spellwrack](/Spells.aspx?ID=1683)" (x1)
+ - "[Fortify Summoning](/Spells.aspx?ID=1898), [Grim Tendrils](/Spells.aspx?ID=1548), [Phantasmal Minion](/Spells.aspx?ID=1631), [Summon Undead](/Spells.aspx?ID=1706), [Telekinetic Hand](/Spells.aspx?ID=1715), [Void Warp](/Spells.aspx?ID=1745), [Darkness](/Spells.aspx?ID=1480), [See the Unseen](/Spells.aspx?ID=1663), [Bind Undead](/Spells.aspx?ID=1449), [Ghostly Weapon](/Spells.aspx?ID=1544), [Flicker](/Spells.aspx?ID=1532), [Spiral of Horrors](/Spells.aspx?ID=1899), [Translocate](/Spells.aspx?ID=1724), [Banishment](/Spells.aspx?ID=1448), [Invoke Spirits](/Spells.aspx?ID=1578), [Teleport](/Spells.aspx?ID=1720), [Vampiric Exsanguination](/Spells.aspx?ID=1735), [Eclipse Burst](/Spells.aspx?ID=1508), [Interplanar Teleport](/Spells.aspx?ID=1576), [Quandary](/Spells.aspx?ID=1644), [Unrelenting Observation](/Spells.aspx?ID=1734), [Massacre](/Spells.aspx?ID=1596)" (x1)
+ - "[Earthworks](/Spells.aspx?ID=1900), [Hydraulic Push](/Spells.aspx?ID=1561), [Prestidigitation](/Spells.aspx?ID=1639), [Pummeling Rubble](/Spells.aspx?ID=1642), [Read Aura](/Spells.aspx?ID=1646), [Summon Construct](/Spells.aspx?ID=1696), [Revealing Light](/Spells.aspx?ID=1653), [Water Walk](/Spells.aspx?ID=1756), [Cozy Cabin](/Spells.aspx?ID=1474), [Safe Passage](/Spells.aspx?ID=1659), [Community Restoration](/Spells.aspx?ID=1901), [Creation](/Spells.aspx?ID=1477), [Unfettered Movement](/Spells.aspx?ID=1732), [Control Water](/Spells.aspx?ID=1473), [Wall of Stone](/Spells.aspx?ID=1751), [Disintegrate](/Spells.aspx?ID=1492), [Wall of Force](/Spells.aspx?ID=1749), [Planar Palace](/Spells.aspx?ID=1634), [Retrocognition](/Spells.aspx?ID=1652), [Earthquake](/Spells.aspx?ID=1507), [Pinpoint](/Spells.aspx?ID=1633), [Foresight](/Spells.aspx?ID=1537)" (x1)
+ - "[Charming Push](/Spells.aspx?ID=1902), [Daze](/Spells.aspx?ID=1482), [Dizzying Colors](/Spells.aspx?ID=1500), [Figment](/Spells.aspx?ID=1528), [Sleep](/Spells.aspx?ID=1675), [Sure Strike](/Spells.aspx?ID=1709), [Illusory Creature](/Spells.aspx?ID=1567), [Stupefy](/Spells.aspx?ID=1691), [Dream Message](/Spells.aspx?ID=1503), [Mind Reading](/Spells.aspx?ID=1602), [Invisibility Cloak](/Spells.aspx?ID=1903), [Nightmare](/Spells.aspx?ID=1615), [Vision of Death](/Spells.aspx?ID=1742), [Hallucination](/Spells.aspx?ID=1551), [Illusory Scene](/Spells.aspx?ID=1570), [Never Mind](/Spells.aspx?ID=1614), [Phantasmal Calamity](/Spells.aspx?ID=1630), [Project Image](/Spells.aspx?ID=1640), [Warp Mind](/Spells.aspx?ID=1754), [Disappearance](/Spells.aspx?ID=1490), [Uncontrollable Dance](/Spells.aspx?ID=1730), [Phantasmagoria](/Spells.aspx?ID=1629)" (x1)
+ - "[Gouging Claw](/Spells.aspx?ID=1546), [Jump](/Spells.aspx?ID=1580), [Pest Form](/Spells.aspx?ID=1626), [Scramble Body](/Spells.aspx?ID=1904), [Spider Sting](/Spells.aspx?ID=1684), [Tangle Vine](/Spells.aspx?ID=1713), [Enlarge](/Spells.aspx?ID=1514), [Humanoid Form](/Spells.aspx?ID=1560), [Feet to Fins](/Spells.aspx?ID=1525), [Vampiric Feast](/Spells.aspx?ID=1736), [Mountain Resilience](/Spells.aspx?ID=1610), [Shifting Form](/Spells.aspx?ID=1905), [Vapor Form](/Spells.aspx?ID=1738), [Elemental Form](/Spells.aspx?ID=1510), [Toxic Cloud](/Spells.aspx?ID=1722), [Cursed Metamorphosis](/Spells.aspx?ID=1479), [Petrify](/Spells.aspx?ID=1628), [Duplicate Foe](/Spells.aspx?ID=1505), [Fiery Body](/Spells.aspx?ID=1527), [Desiccate](/Spells.aspx?ID=1484), [Monstrosity Form](/Spells.aspx?ID=1608), [Metamorphosis](/Spells.aspx?ID=1599)" (x1)
+ - "[Hand of the Apprentice](/Spells.aspx?ID=1906), [Interdisciplinary Incantation](/Spells.aspx?ID=1907)" (x1)
+ - "[Shield](/Spells.aspx?ID=1671), [Telekinetic Projectile](/Spells.aspx?ID=1718), [Breathe Fire](/Spells.aspx?ID=1457), [Force Barrage](/Spells.aspx?ID=1536), [Mystic Armor](/Spells.aspx?ID=1611), [Mist](/Spells.aspx?ID=1606), [Resist Energy](/Spells.aspx?ID=1651), [Earthbind](/Spells.aspx?ID=1506), [Fireball](/Spells.aspx?ID=1530), [Wall of Fire](/Spells.aspx?ID=1748), [Howling Blizzard](/Spells.aspx?ID=1559), [Impaling Spike](/Spells.aspx?ID=1571), [Chain Lightning](/Spells.aspx?ID=1462), [Disintegrate](/Spells.aspx?ID=1492), [Energy Aegis](/Spells.aspx?ID=1512), [True Target](/Spells.aspx?ID=1726), [Arctic Rift](/Spells.aspx?ID=1444), [Desiccate](/Spells.aspx?ID=1484), [Falling Stars](/Spells.aspx?ID=1521), [Force Bolt](/Spells.aspx?ID=1896), [Energy Absorption](/Spells.aspx?ID=1897), [Weapon Storm](/Spells.aspx?ID=1758)" (x1)
+ - "[Clairaudience](/Spells.aspx?ID=1465), [Clairvoyance](/Spells.aspx?ID=1466), [Disappearance](/Spells.aspx?ID=1490), [Duplicate Foe](/Spells.aspx?ID=1505), [Figment](/Spells.aspx?ID=1528), [Fleet Step](/Spells.aspx?ID=1531), [Gouging Claw](/Spells.aspx?ID=1546), [Hallucination](/Spells.aspx?ID=1551), [Illusory Disguise](/Spells.aspx?ID=1568), [Illusory Scene](/Spells.aspx?ID=1570), [Invisibility](/Spells.aspx?ID=1577), [Mislead](/Spells.aspx?ID=1605), [Mist](/Spells.aspx?ID=1606), [Paralyze](/Spells.aspx?ID=1622), [Phantasmagoria](/Spells.aspx?ID=1629), [Phantasmal Calamity](/Spells.aspx?ID=1630), [Project Image](/Spells.aspx?ID=1640), [Sure Strike](/Spells.aspx?ID=1709), [Translocate](/Spells.aspx?ID=1724), [Unrelenting Observation](/Spells.aspx?ID=1734), [Debilitating Terror](/Spells.aspx?ID=2130), [Shroud of the Mantis](/Spells.aspx?ID=2131)" (x1)
+ - "[Detect Magic](/Spells.aspx?ID=1485), [Alarm](/Spells.aspx?ID=1439), [Dispel Magic](/Spells.aspx?ID=1493), [Safe Passage](/Spells.aspx?ID=1659), [Mountain Resilience](/Spells.aspx?ID=1610), [Control Water](/Spells.aspx?ID=1473), [Truesight](/Spells.aspx?ID=1727), [Energy Aegis](/Spells.aspx?ID=1512), [Quandary](/Spells.aspx?ID=1644), [Halcyon Mists](/Spells.aspx?ID=2303), [Call the Ten](/Spells.aspx?ID=2304)" (x1)
+ - "[Detect Magic](/Spells.aspx?ID=1485), [Sigil](/Spells.aspx?ID=1673), [Mystic Armor](/Spells.aspx?ID=1611), [Runic Body](/Spells.aspx?ID=1657), [Runic Weapon](/Spells.aspx?ID=1658), [Sure Strike](/Spells.aspx?ID=1709), [Darkvision](/Spells.aspx?ID=1481), [See the Unseen](/Spells.aspx?ID=1663), [Clairaudience](/Spells.aspx?ID=1465), [Veil of Privacy](/Spells.aspx?ID=1739), [Clairvoyance](/Spells.aspx?ID=1466), [Fly](/Spells.aspx?ID=1534), [Mind Probe](/Spells.aspx?ID=1601), [Sending](/Spells.aspx?ID=1665), [Scrying](/Spells.aspx?ID=1662), [Truesight](/Spells.aspx?ID=1727), [Contingency](/Spells.aspx?ID=1472), [Spell Riposte](/Spells.aspx?ID=2027), [Unrelenting Observation](/Spells.aspx?ID=1734), [Seize Soul](/Spells.aspx?ID=1664), [Foresight](/Spells.aspx?ID=1537), [Personal Runewell](/Spells.aspx?ID=2325)" (x1)
+ - "[Telekinetic Hand](/Spells.aspx?ID=1715), [Telekinetic Projectile](/Spells.aspx?ID=1718), [Fleet Step](/Spells.aspx?ID=1531), [Gust of Wind](/Spells.aspx?ID=1550), [Mending](/Spells.aspx?ID=1597), [Knock](/Spells.aspx?ID=1581), [Mental Map](/Spells.aspx?ID=2295), [Locate](/Spells.aspx?ID=1588), [Overwhelming Memory](/Spells.aspx?ID=2296), [Bridge of Vines](/Spells.aspx?ID=2294), [Shape Stone](/Spells.aspx?ID=1667), [Mind Probe](/Spells.aspx?ID=1601), [Scouting Eye](/Spells.aspx?ID=1661), [Truesight](/Spells.aspx?ID=1727), [Wall of Force](/Spells.aspx?ID=1749), [Restore Ground](/Spells.aspx?ID=2297), [Retrocognition](/Spells.aspx?ID=1652), [Pinpoint](/Spells.aspx?ID=1633), [Unrelenting Observation](/Spells.aspx?ID=1734), [Metamorphosis](/Spells.aspx?ID=1599), [Grasping Vine](/Spells.aspx?ID=2292), [Unsettling Knowledge](/Spells.aspx?ID=2293)" (x1)
+ 'summary_markdown':
+ type: string
+ path: arcane-school.summary_markdown
+ is_null: false
+ values: 20
+ different_values: 20 (all different)
+ variants:
+ - "As an abjurer, you master the art of protection, strengthening defenses, preventing attacks, and even turning magic against itself. You understand …" (x1)
+ - "As a conjurer, you summon creatures and objects from places beyond, and use magic to transport to distant locales. You understand that the true key …" (x1)
+ - "As a diviner, you master remote viewing and prescience, learning information that can transform investigations, research, and battle strategies. You …" (x1)
+ - "As an enchanter, you use magic to manipulate others’ minds. You might use your abilities to subtly influence others or seize control over them. You …" (x1)
+ - "As an evoker, you revel in the raw power of magic, using it to create and destroy with ease. You can call forth elements, forces, and energy to …" (x1)
+ - "As an illusionist, you use magic to create images, figments, and phantasms to baffle your enemies. You understand that perception is reality. You add …" (x1)
+ - "As a necromancer, you call upon the powers of life and death. While your school is often vilified for its association with raising the undead, you …" (x1)
+ - "As a transmuter, you alter the physical properties of things, transforming creatures, objects, the natural world, and even yourself at your whim. You …" (x1)
+ - "Instead of specializing narrowly in an arcane school, you can become a universalist wizard—by studying all the schools equally, you devote yourself …" (x1)
+ - "Runes and wards, numbers and letters—they underpin all magic, making them the logical subject for a wizard who studies fundamental forces. Perhaps …" (x1)
+ - "Why use your magic to affect something as pedestrian as the physical world? Whether you studied at the College of Dimensional Studies in Katapesh or …" (x1)
+ - "Whether you studied in Manaket's Occularium or the Academy of Applied Magic, you learned that the fruits of arcane studies—like any other …" (x1)
+ - "As a scholar, you know all too well the importance of a sound mind. Thus, you attended a school—like the Farseer Tower or the Stone of the Seers—that …" (x1)
+ - "The uninitiated often think of wizards as cerebral, focused on their studies more than the body, yet your school of magic taught of the relationship …" (x1)
+ - "You eschew the idea that magic can be neatly expressed by the teachings of any single school or college, instead directing your self-study to pick up …" (x1)
+ - "Magic is power, and there are always those who will use power for the art of battle. You may have studied in the military of a nation of the brink of …" (x1)
+ - "While any thug can commit a murder, proper assassination requires finesse and guile. Deep within the Crimson Citadel, the Red Mantis assassins have …" (x1)
+ - "You’ve studied at the Magaambya or under one of its traveling professors, learning the ancient magic of Golarion’s oldest academy. Your curriculum is …" (x1)
+ - "This curriculum, taught at a few select academies in New Thassilon, can be learned only by wizards with the runelord class archetype. You have …" (x1)
+ - "Whether it's been lost to war, abandoned during calamity, or simply buried by the ages, there is as much important knowledge to be found in the …" (x1)
+ 'type':
+ type: string
+ path: arcane-school.type
+ is_null: false
+ values: 20
+ different_values: 1 (all same)
+ variants: "Wizard Arcane School" (x20)
+ 'url':
+ type: string
+ path: arcane-school.url
+ is_null: false
+ values: 20
+ different_values: 20 (all different)
+ variants:
+ - "/ArcaneSchools.aspx?ID=1" (x1)
+ - "/ArcaneSchools.aspx?ID=2" (x1)
+ - "/ArcaneSchools.aspx?ID=3" (x1)
+ - "/ArcaneSchools.aspx?ID=4" (x1)
+ - "/ArcaneSchools.aspx?ID=5" (x1)
+ - "/ArcaneSchools.aspx?ID=6" (x1)
+ - "/ArcaneSchools.aspx?ID=7" (x1)
+ - "/ArcaneSchools.aspx?ID=8" (x1)
+ - "/ArcaneSchools.aspx?ID=9" (x1)
+ - "/ArcaneSchools.aspx?ID=16" (x1)
+ - "/ArcaneSchools.aspx?ID=17" (x1)
+ - "/ArcaneSchools.aspx?ID=18" (x1)
+ - "/ArcaneSchools.aspx?ID=19" (x1)
+ - "/ArcaneSchools.aspx?ID=20" (x1)
+ - "/ArcaneSchools.aspx?ID=21" (x1)
+ - "/ArcaneSchools.aspx?ID=22" (x1)
+ - "/ArcaneSchools.aspx?ID=23" (x1)
+ - "/ArcaneSchools.aspx?ID=24" (x1)
+ - "/ArcaneSchools.aspx?ID=25" (x1)
+ - "/ArcaneSchools.aspx?ID=26" (x1)
+ 'weakness':
+ type: object
+ path: arcane-school.weakness
+ is_null: false
+ values: 20
+ schema:
+ [primary_source_group]:
+ type: string
+ path: arcane-school.primary_source_group
+ is_null: true
+ values: 1
+ different_values: 1 (all same)
+ variants: "Prey for Death" (x1)
+ [source_group]:
+ type: array
+ path: arcane-school.source_group
+ is_null: true
+ values: 1
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: arcane-school.source_group.[]
+ is_null: false
+ values: 1
+ different_values: 1 (all same)
+ variants: "Prey for Death" (x1)
diff --git a/output/aonprd/arcane-thesis.yaml b/output/aonprd/arcane-thesis.yaml
new file mode 100644
index 0000000..ae37778
--- /dev/null
+++ b/output/aonprd/arcane-thesis.yaml
@@ -0,0 +1,229 @@
+name: arcane-thesis
+values: 10
+schema:
+ 'category':
+ type: string
+ path: arcane-thesis.category
+ is_null: false
+ values: 10
+ different_values: 1 (all same)
+ variants: "arcane-thesis" (x10)
+ 'id':
+ type: string
+ path: arcane-thesis.id
+ is_null: false
+ values: 10
+ different_values: 10 (all different)
+ variants:
+ - "arcane-thesis-1" (x1)
+ - "arcane-thesis-2" (x1)
+ - "arcane-thesis-3" (x1)
+ - "arcane-thesis-4" (x1)
+ - "arcane-thesis-5" (x1)
+ - "arcane-thesis-6" (x1)
+ - "arcane-thesis-7" (x1)
+ - "arcane-thesis-8" (x1)
+ - "arcane-thesis-9" (x1)
+ - "arcane-thesis-10" (x1)
+ 'legacy_id':
+ type: array
+ path: arcane-thesis.legacy_id
+ is_null: false
+ values: 5
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: arcane-thesis.legacy_id.[]
+ is_null: false
+ values: 5
+ different_values: 5
+ variants:
+ - "arcane-thesis-2" (x1)
+ - "arcane-thesis-1" (x1)
+ - "arcane-thesis-3" (x1)
+ - "arcane-thesis-4" (x1)
+ - "arcane-thesis-5" (x1)
+ 'markdown':
+ type: string
+ path: arcane-thesis.markdown
+ is_null: false
+ values: 10
+ different_values: 10 (all different)
+ variants: [omitted]
+ 'name':
+ type: string
+ path: arcane-thesis.name
+ is_null: false
+ values: 10
+ different_values: 6
+ variants:
+ - "Improved Familiar Attunement" (x2)
+ - "Spell Blending" (x2)
+ - "Spell Substitution" (x2)
+ - "Staff Nexus" (x2)
+ - "Metamagical Experimentation" (x1)
+ - "Experimental Spellshaping" (x1)
+ 'pfs':
+ type: string
+ path: arcane-thesis.pfs
+ is_null: false
+ values: 10
+ different_values: 1 (all same)
+ variants: "Standard" (x10)
+ 'primary_source_category':
+ type: string
+ path: arcane-thesis.primary_source_category
+ is_null: false
+ values: 10
+ different_values: 1 (all same)
+ variants: "Rulebooks" (x10)
+ 'rarity':
+ type: string
+ path: arcane-thesis.rarity
+ is_null: false
+ values: 10
+ different_values: 1 (all same)
+ variants: "common" (x10)
+ 'rarity_id':
+ type: integer
+ path: arcane-thesis.rarity_id
+ is_null: false
+ values: 10
+ different_values: 1 (all same)
+ variants: 1 (x10)
+ 'release_date':
+ type: string
+ path: arcane-thesis.release_date
+ is_null: false
+ values: 10
+ different_values: 3
+ variants:
+ - "2023-11-15" (x5)
+ - "2019-08-01" (x4)
+ - "2020-07-30" (x1)
+ 'resistance':
+ type: object
+ path: arcane-thesis.resistance
+ is_null: false
+ values: 10
+ schema:
+ [remaster_id]:
+ type: array
+ path: arcane-thesis.remaster_id
+ is_null: true
+ values: 5
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: arcane-thesis.remaster_id.[]
+ is_null: false
+ values: 5
+ different_values: 5
+ variants:
+ - "arcane-thesis-7" (x1)
+ - "arcane-thesis-6" (x1)
+ - "arcane-thesis-8" (x1)
+ - "arcane-thesis-9" (x1)
+ - "arcane-thesis-10" (x1)
+ 'search_markdown':
+ type: string
+ path: arcane-thesis.search_markdown
+ is_null: false
+ values: 10
+ different_values: 10 (all different)
+ variants: [omitted]
+ 'source':
+ type: array
+ path: arcane-thesis.source
+ is_null: false
+ values: 10
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: arcane-thesis.source.[]
+ is_null: false
+ values: 10
+ different_values: 3
+ variants:
+ - "Player Core" (x5)
+ - "Core Rulebook" (x4)
+ - "Advanced Player's Guide" (x1)
+ 'source_category':
+ type: array
+ path: arcane-thesis.source_category
+ is_null: false
+ values: 10
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: arcane-thesis.source_category.[]
+ is_null: false
+ values: 10
+ different_values: 1 (all same)
+ variants: "Rulebooks" (x10)
+ 'source_markdown':
+ type: string
+ path: arcane-thesis.source_markdown
+ is_null: false
+ values: 10
+ different_values: 4
+ variants:
+ - "[Player Core](/Sources.aspx?ID=216) pg. 195 2.0" (x5)
+ - "[Core Rulebook](/Sources.aspx?ID=1) pg. 205 4.0" (x2)
+ - "[Core Rulebook](/Sources.aspx?ID=1) pg. 206 4.0" (x2)
+ - "[Advanced Player's Guide](/Sources.aspx?ID=39) pg. 142 2.0" (x1)
+ 'speed':
+ type: object
+ path: arcane-thesis.speed
+ is_null: false
+ values: 10
+ schema:
+ 'summary_markdown':
+ type: string
+ path: arcane-thesis.summary_markdown
+ is_null: false
+ values: 10
+ different_values: 8
+ variants:
+ - "You theorize that spell slots are a shorthand for an underlying energy that powers all spellcasting, and you've found a way to tinker with the …" (x2)
+ - "Your thesis maintains that early and intense adoption of staves from the first days of study can create a symbiotic bond between spellcaster and …" (x2)
+ - "You've long held that fine-tuning the magic that bonds wizard and familiar can improve the mystic connection, compared to the safe yet generic bond …" (x1)
+ - "You've realized that the practice known as metamagic is a holdover from a time long ago, when wizards had to work out their own spells and variations …" (x1)
+ - "You don't accept the fact that once spells are prepared, they can't be changed until your next daily preparation, and you have uncovered a shortcut …" (x1)
+ - "Your thesis posits that the magical practice of spellshaping can be realized more efficiently by altering variables and parameters as you cast, …" (x1)
+ - "You've long held that fine-tuning the magic that bonds a wizard and their familiar can improve the mystic connection and yield greater results, …" (x1)
+ - "You don't accept the fact that once spells are prepared, they can't be changed until your next daily preparations, and you have uncovered a shortcut …" (x1)
+ 'type':
+ type: string
+ path: arcane-thesis.type
+ is_null: false
+ values: 10
+ different_values: 1 (all same)
+ variants: "Wizard Arcane Thesis" (x10)
+ 'url':
+ type: string
+ path: arcane-thesis.url
+ is_null: false
+ values: 10
+ different_values: 10 (all different)
+ variants:
+ - "/ArcaneThesis.aspx?ID=1" (x1)
+ - "/ArcaneThesis.aspx?ID=2" (x1)
+ - "/ArcaneThesis.aspx?ID=3" (x1)
+ - "/ArcaneThesis.aspx?ID=4" (x1)
+ - "/ArcaneThesis.aspx?ID=5" (x1)
+ - "/ArcaneThesis.aspx?ID=6" (x1)
+ - "/ArcaneThesis.aspx?ID=7" (x1)
+ - "/ArcaneThesis.aspx?ID=8" (x1)
+ - "/ArcaneThesis.aspx?ID=9" (x1)
+ - "/ArcaneThesis.aspx?ID=10" (x1)
+ 'weakness':
+ type: object
+ path: arcane-thesis.weakness
+ is_null: false
+ values: 10
+ schema:
diff --git a/output/aonprd/archetype.yaml b/output/aonprd/archetype.yaml
new file mode 100644
index 0000000..132918a
--- /dev/null
+++ b/output/aonprd/archetype.yaml
@@ -0,0 +1,350 @@
+name: archetype
+values: 264
+schema:
+ 'archetype':
+ type: array
+ path: archetype.archetype
+ is_null: false
+ values: 264
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: archetype.archetype.[]
+ is_null: false
+ values: 264
+ different_values: 208
+ variants: [omitted]
+ 'category':
+ type: string
+ path: archetype.category
+ is_null: false
+ values: 264
+ different_values: 1 (all same)
+ variants: "archetype" (x264)
+ 'id':
+ type: string
+ path: archetype.id
+ is_null: false
+ values: 264
+ different_values: 264 (all different)
+ variants: [omitted]
+ [image]:
+ type: array
+ path: archetype.image
+ is_null: true
+ values: 72
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: archetype.image.[]
+ is_null: false
+ values: 72
+ different_values: 72
+ variants: [omitted]
+ 'markdown':
+ type: string
+ path: archetype.markdown
+ is_null: false
+ values: 264
+ different_values: 264 (all different)
+ variants: [omitted]
+ 'name':
+ type: string
+ path: archetype.name
+ is_null: false
+ values: 264
+ different_values: 208
+ variants: [omitted]
+ [legacy_id]:
+ type: array
+ path: archetype.legacy_id
+ is_null: true
+ values: 54
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: archetype.legacy_id.[]
+ is_null: false
+ values: 54
+ different_values: 54
+ variants: [omitted]
+ 'primary_source_category':
+ type: string
+ path: archetype.primary_source_category
+ is_null: false
+ values: 264
+ different_values: 5
+ variants:
+ - "Rulebooks" (x181)
+ - "Lost Omens" (x46)
+ - "Adventure Paths" (x33)
+ - "Adventures" (x3)
+ - "Blog Posts" (x1)
+ [primary_source_group]:
+ type: string
+ path: archetype.primary_source_group
+ is_null: true
+ values: 36
+ different_values: 15
+ variants:
+ - "Extinction Curse" (x5)
+ - "Fists of the Ruby Phoenix" (x4)
+ - "Age of Ashes" (x3)
+ - "Agents of Edgewatch" (x3)
+ - "Abomination Vaults" (x3)
+ - "Strength of Thousands" (x3)
+ - "Gatewalkers" (x3)
+ - "Sky King's Tomb" (x3)
+ - "Quest for the Frozen Flame" (x2)
+ - "Outlaws of Alkenstar" (x2)
+ - "The Slithering" (x1)
+ - "Night of the Gray Death" (x1)
+ - "Blood Lords" (x1)
+ - "Stolen Fate" (x1)
+ - "Prey for Death" (x1)
+ 'rarity':
+ type: string
+ path: archetype.rarity
+ is_null: false
+ values: 264
+ different_values: 3
+ variants:
+ - "common" (x143)
+ - "uncommon" (x96)
+ - "rare" (x25)
+ 'rarity_id':
+ type: integer
+ path: archetype.rarity_id
+ is_null: false
+ values: 264
+ different_values: 3
+ variants:
+ - 1 (x143)
+ - 2 (x96)
+ - 3 (x25)
+ 'release_date':
+ type: string
+ path: archetype.release_date
+ is_null: false
+ values: 264
+ different_values: 41
+ variants: [omitted]
+ [level]:
+ type: integer
+ path: archetype.level
+ is_null: true
+ values: 251
+ different_values: 6
+ variants:
+ - 2 (x215)
+ - 4 (x15)
+ - 6 (x14)
+ - 8 (x3)
+ - 10 (x2)
+ - 12 (x2)
+ [pfs]:
+ type: string
+ path: archetype.pfs
+ is_null: true
+ values: 254
+ different_values: 3
+ variants:
+ - "Standard" (x205)
+ - "Limited" (x45)
+ - "Restricted" (x4)
+ [prerequisite_markdown]:
+ type: string
+ path: archetype.prerequisite_markdown
+ is_null: true
+ values: 217
+ different_values: 176
+ variants: [omitted]
+ [remaster_id]:
+ type: array
+ path: archetype.remaster_id
+ is_null: true
+ values: 54
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: archetype.remaster_id.[]
+ is_null: false
+ values: 54
+ different_values: 54
+ variants: [omitted]
+ 'trait_markdown':
+ type: string
+ path: archetype.trait_markdown
+ is_null: false
+ values: 264
+ different_values: 5
+ variants:
+ - "" (x143)
+ - "[Uncommon](/Traits.aspx?ID=159)" (x84)
+ - "[Rare](/Traits.aspx?ID=137)" (x18)
+ - "[Uncommon](/Traits.aspx?ID=721)" (x12)
+ - "[Rare](/Traits.aspx?ID=683)" (x7)
+ 'type':
+ type: string
+ path: archetype.type
+ is_null: false
+ values: 264
+ different_values: 1 (all same)
+ variants: "Archetype" (x264)
+ 'url':
+ type: string
+ path: archetype.url
+ is_null: false
+ values: 264
+ different_values: 264 (all different)
+ variants: [omitted]
+ 'weakness':
+ type: object
+ path: archetype.weakness
+ is_null: false
+ values: 264
+ schema:
+ [requirement_markdown]:
+ type: string
+ path: archetype.requirement_markdown
+ is_null: true
+ values: 1
+ different_values: 1 (all same)
+ variants: "You were born into a lineage of true werecreatures or were afflicted with the curse of the werecreature." (x1)
+ 'resistance':
+ type: object
+ path: archetype.resistance
+ is_null: false
+ values: 264
+ schema:
+ 'search_markdown':
+ type: string
+ path: archetype.search_markdown
+ is_null: false
+ values: 264
+ different_values: 264 (all different)
+ variants: [omitted]
+ 'source':
+ type: array
+ path: archetype.source
+ is_null: false
+ values: 264
+ min_count: 1
+ max_count: 2
+ value_type:
+ type: string
+ path: archetype.source.[]
+ is_null: false
+ values: 268
+ different_values: 53
+ variants: [omitted]
+ 'source_category':
+ type: array
+ path: archetype.source_category
+ is_null: false
+ values: 264
+ min_count: 1
+ max_count: 2
+ value_type:
+ type: string
+ path: archetype.source_category.[]
+ is_null: false
+ values: 268
+ different_values: 5
+ variants:
+ - "Rulebooks" (x181)
+ - "Lost Omens" (x48)
+ - "Adventure Paths" (x35)
+ - "Adventures" (x3)
+ - "Blog Posts" (x1)
+ 'source_markdown':
+ type: string
+ path: archetype.source_markdown
+ is_null: false
+ values: 264
+ different_values: 264 (all different)
+ variants: [omitted]
+ 'speed':
+ type: object
+ path: archetype.speed
+ is_null: false
+ values: 264
+ schema:
+ [source_group]:
+ type: array
+ path: archetype.source_group
+ is_null: true
+ values: 38
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: archetype.source_group.[]
+ is_null: false
+ values: 38
+ different_values: 15
+ variants:
+ - "Extinction Curse" (x5)
+ - "Strength of Thousands" (x4)
+ - "Agents of Edgewatch" (x4)
+ - "Fists of the Ruby Phoenix" (x4)
+ - "Age of Ashes" (x3)
+ - "Abomination Vaults" (x3)
+ - "Gatewalkers" (x3)
+ - "Sky King's Tomb" (x3)
+ - "Quest for the Frozen Flame" (x2)
+ - "Outlaws of Alkenstar" (x2)
+ - "The Slithering" (x1)
+ - "Night of the Gray Death" (x1)
+ - "Blood Lords" (x1)
+ - "Stolen Fate" (x1)
+ - "Prey for Death" (x1)
+ [spoilers]:
+ type: string
+ path: archetype.spoilers
+ is_null: true
+ values: 35
+ different_values: 15
+ variants:
+ - "Extinction Curse" (x5)
+ - "Fists of the Ruby Phoenix" (x4)
+ - "Age of Ashes" (x3)
+ - "Abomination Vaults" (x3)
+ - "Strength of Thousands" (x3)
+ - "Gatewalkers" (x3)
+ - "Sky King's Tomb" (x3)
+ - "Agents of Edgewatch" (x2)
+ - "Quest for the Frozen Flame" (x2)
+ - "Outlaws of Alkenstar" (x2)
+ - "The Slithering" (x1)
+ - "Night of the Gray Death" (x1)
+ - "Blood Lords" (x1)
+ - "Stolen Fate" (x1)
+ - "Prey for Death" (x1)
+ 'summary_markdown':
+ type: string
+ path: archetype.summary_markdown
+ is_null: false
+ values: 264
+ different_values: 239
+ variants: [omitted]
+ [trait]:
+ type: array
+ path: archetype.trait
+ is_null: true
+ values: 121
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: archetype.trait.[]
+ is_null: false
+ values: 121
+ different_values: 2
+ variants:
+ - "Uncommon" (x96)
+ - "Rare" (x25)
diff --git a/output/aonprd/armor-group.yaml b/output/aonprd/armor-group.yaml
new file mode 100644
index 0000000..a6357aa
--- /dev/null
+++ b/output/aonprd/armor-group.yaml
@@ -0,0 +1,196 @@
+name: armor-group
+values: 7
+schema:
+ 'armor_group_markdown':
+ type: string
+ path: armor-group.armor_group_markdown
+ is_null: false
+ values: 7
+ different_values: 7 (all different)
+ variants:
+ - "Chain" (x1)
+ - "Composite" (x1)
+ - "Leather" (x1)
+ - "Plate" (x1)
+ - "Cloth" (x1)
+ - "Skeletal" (x1)
+ - "Wood" (x1)
+ 'category':
+ type: string
+ path: armor-group.category
+ is_null: false
+ values: 7
+ different_values: 1 (all same)
+ variants: "armor-group" (x7)
+ 'id':
+ type: string
+ path: armor-group.id
+ is_null: false
+ values: 7
+ different_values: 7 (all different)
+ variants:
+ - "armor-group-1" (x1)
+ - "armor-group-2" (x1)
+ - "armor-group-3" (x1)
+ - "armor-group-4" (x1)
+ - "armor-group-5" (x1)
+ - "armor-group-6" (x1)
+ - "armor-group-7" (x1)
+ 'markdown':
+ type: string
+ path: armor-group.markdown
+ is_null: false
+ values: 7
+ different_values: 7 (all different)
+ variants: [omitted]
+ 'name':
+ type: string
+ path: armor-group.name
+ is_null: false
+ values: 7
+ different_values: 7 (all different)
+ variants:
+ - "Chain" (x1)
+ - "Composite" (x1)
+ - "Leather" (x1)
+ - "Plate" (x1)
+ - "Cloth" (x1)
+ - "Skeletal" (x1)
+ - "Wood" (x1)
+ 'primary_source_category':
+ type: string
+ path: armor-group.primary_source_category
+ is_null: false
+ values: 7
+ different_values: 2
+ variants:
+ - "Rulebooks" (x6)
+ - "Society" (x1)
+ 'rarity':
+ type: string
+ path: armor-group.rarity
+ is_null: false
+ values: 7
+ different_values: 1 (all same)
+ variants: "common" (x7)
+ 'rarity_id':
+ type: integer
+ path: armor-group.rarity_id
+ is_null: false
+ values: 7
+ different_values: 1 (all same)
+ variants: 1 (x7)
+ 'release_date':
+ type: string
+ path: armor-group.release_date
+ is_null: false
+ values: 7
+ different_values: 3
+ variants:
+ - "2019-08-01" (x4)
+ - "2023-02-22" (x2)
+ - "2019-07-31" (x1)
+ 'resistance':
+ type: object
+ path: armor-group.resistance
+ is_null: false
+ values: 7
+ schema:
+ 'search_markdown':
+ type: string
+ path: armor-group.search_markdown
+ is_null: false
+ values: 7
+ different_values: 7 (all different)
+ variants: [omitted]
+ 'source':
+ type: array
+ path: armor-group.source
+ is_null: false
+ values: 7
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: armor-group.source.[]
+ is_null: false
+ values: 7
+ different_values: 3
+ variants:
+ - "Core Rulebook" (x4)
+ - "Treasure Vault" (x2)
+ - "PFS Scenario #1-03: Escaping the Grave" (x1)
+ 'source_category':
+ type: array
+ path: armor-group.source_category
+ is_null: false
+ values: 7
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: armor-group.source_category.[]
+ is_null: false
+ values: 7
+ different_values: 2
+ variants:
+ - "Rulebooks" (x6)
+ - "Society" (x1)
+ 'source_markdown':
+ type: string
+ path: armor-group.source_markdown
+ is_null: false
+ values: 7
+ different_values: 4
+ variants:
+ - "[Core Rulebook](/Sources.aspx?ID=1) pg. 275 4.0" (x4)
+ - "[PFS Scenario #1-03: Escaping the Grave](/Sources.aspx?ID=9) pg. 191" (x1)
+ - "[Treasure Vault](/Sources.aspx?ID=191) pg. 8 1.1" (x1)
+ - "[Treasure Vault](/Sources.aspx?ID=191) pg. 9 1.1" (x1)
+ 'speed':
+ type: object
+ path: armor-group.speed
+ is_null: false
+ values: 7
+ schema:
+ 'summary_markdown':
+ type: string
+ path: armor-group.summary_markdown
+ is_null: false
+ values: 7
+ different_values: 7 (all different)
+ variants:
+ - "The armor is so flexible it can bend with a critical hit and absorb some of the blow. Reduce the damage from critical hits by either 4 + the value of …" (x1)
+ - "The numerous overlapping pieces of this armor protect you from piercing attacks. You gain resistance to piercing damage equal to 1 + the value of the …" (x1)
+ - "The thick second skin of the armor disperses blunt force to reduce bludgeoning damage. You gain resistance to bludgeoning damage equal to 1 + the …" (x1)
+ - "The sturdy plate provides no purchase for a cutting edge. You gain resistance to slashing damage equal to 1 + the value of the armor’s potency rune …" (x1)
+ - "Nethys Note: there is no medium or heavy cloth armor, so there is no armor specialization effect for the cloth armor group. Clothing isn't armor, …" (x1)
+ - "Armor made from the bone or exoskeleton of creatures as diverse as bears, insects, and coral, skeletal armor protects vital points from precision …" (x1)
+ - "Wood armor is generally flexible and light, but it can splinter as it breaks, throwing off shards and fragments that damage foes who deal you …" (x1)
+ 'type':
+ type: string
+ path: armor-group.type
+ is_null: false
+ values: 7
+ different_values: 1 (all same)
+ variants: "Armor Specialization" (x7)
+ 'url':
+ type: string
+ path: armor-group.url
+ is_null: false
+ values: 7
+ different_values: 7 (all different)
+ variants:
+ - "/ArmorGroups.aspx?ID=1" (x1)
+ - "/ArmorGroups.aspx?ID=2" (x1)
+ - "/ArmorGroups.aspx?ID=3" (x1)
+ - "/ArmorGroups.aspx?ID=4" (x1)
+ - "/ArmorGroups.aspx?ID=5" (x1)
+ - "/ArmorGroups.aspx?ID=6" (x1)
+ - "/ArmorGroups.aspx?ID=7" (x1)
+ 'weakness':
+ type: object
+ path: armor-group.weakness
+ is_null: false
+ values: 7
+ schema:
diff --git a/output/aonprd/armor.yaml b/output/aonprd/armor.yaml
new file mode 100644
index 0000000..b241ff4
--- /dev/null
+++ b/output/aonprd/armor.yaml
@@ -0,0 +1,478 @@
+name: armor
+values: 55
+schema:
+ 'ac':
+ type: integer
+ path: armor.ac
+ is_null: false
+ values: 55
+ different_values: 7
+ variants:
+ - 2 (x11)
+ - 3 (x9)
+ - 1 (x8)
+ - 4 (x8)
+ - 6 (x8)
+ - 0 (x6)
+ - 5 (x5)
+ 'armor_category':
+ type: string
+ path: armor.armor_category
+ is_null: false
+ values: 55
+ different_values: 4
+ variants:
+ - "Light" (x19)
+ - "Medium" (x17)
+ - "Heavy" (x13)
+ - "Unarmored" (x6)
+ 'armor_group_markdown':
+ type: string
+ path: armor.armor_group_markdown
+ is_null: false
+ values: 55
+ different_values: 8
+ variants:
+ - "[Plate](/ArmorGroups.aspx?ID=4)" (x15)
+ - "[Leather](/ArmorGroups.aspx?ID=3)" (x8)
+ - "[Cloth](/ArmorGroups.aspx?ID=5)" (x7)
+ - "[Composite](/ArmorGroups.aspx?ID=2)" (x7)
+ - "[Chain](/ArmorGroups.aspx?ID=1)" (x6)
+ - "[Wood](/ArmorGroups.aspx?ID=7)" (x5)
+ - "[Skeletal](/ArmorGroups.aspx?ID=6)" (x4)
+ - "" (x3)
+ 'bulk':
+ type: float
+ path: armor.bulk
+ is_null: false
+ values: 55
+ different_values: 7
+ variants:
+ - 2 (x18)
+ - 1 (x15)
+ - 0.1 (x7)
+ - 3 (x6)
+ - 4 (x4)
+ - 5 (x3)
+ - 0 (x2)
+ 'category':
+ type: string
+ path: armor.category
+ is_null: false
+ values: 55
+ different_values: 1 (all same)
+ variants: "armor" (x55)
+ 'speed':
+ type: object
+ path: armor.speed
+ is_null: false
+ values: 55
+ schema:
+ 'summary_markdown':
+ type: string
+ path: armor.summary_markdown
+ is_null: false
+ values: 55
+ different_values: 44
+ variants: [omitted]
+ 'trait_markdown':
+ type: string
+ path: armor.trait_markdown
+ is_null: false
+ values: 55
+ different_values: 20
+ variants:
+ - "" (x19)
+ - "[Comfort](/Traits.aspx?ID=203)" (x6)
+ - "[Laminar](/Traits.aspx?ID=482)" (x6)
+ - "[Flexible](/Traits.aspx?ID=204), [Noisy](/Traits.aspx?ID=205)" (x4)
+ - "[Bulwark](/Traits.aspx?ID=202)" (x3)
+ - "[Bulwark](/Traits.aspx?ID=202), [Uncommon](/Traits.aspx?ID=159)" (x2)
+ - "[Uncommon](/Traits.aspx?ID=159)" (x2)
+ - "[Comfort](/Traits.aspx?ID=203), [Flexible](/Traits.aspx?ID=204), [Uncommon](/Traits.aspx?ID=159)" (x1)
+ - "[Bulwark](/Traits.aspx?ID=202), [Entrench Melee](/Traits.aspx?ID=474), [Hindering](/Traits.aspx?ID=479)" (x1)
+ - "[Adjusted Storage](/Traits.aspx?ID=468), [Noisy](/Traits.aspx?ID=205)" (x1)
+ - "[Adjusted Armor Latches](/Traits.aspx?ID=468), [Noisy](/Traits.aspx?ID=205)" (x1)
+ - "[Aquadynamic](/Traits.aspx?ID=469)" (x1)
+ - "[Bulwark](/Traits.aspx?ID=202), [Entrench Ranged](/Traits.aspx?ID=474), [Ponderous](/Traits.aspx?ID=486)" (x1)
+ - "[Hindering](/Traits.aspx?ID=479), [Laminar](/Traits.aspx?ID=482)" (x1)
+ - "[Adjusted Weapon Harness](/Traits.aspx?ID=468), [Uncommon](/Traits.aspx?ID=159)" (x1)
+ - "[Bulwark](/Traits.aspx?ID=202), [Laminar](/Traits.aspx?ID=482)" (x1)
+ - "[Inscribed](/Traits.aspx?ID=480)" (x1)
+ - "[Comfort](/Traits.aspx?ID=203), [Flexible](/Traits.aspx?ID=204)" (x1)
+ - "[Flexible](/Traits.aspx?ID=605)" (x1)
+ - "[Aquadynamic](/Traits.aspx?ID=792)" (x1)
+ [check_penalty]:
+ type: integer
+ path: armor.check_penalty
+ is_null: true
+ values: 47
+ different_values: 3
+ variants:
+ - -1 (x17)
+ - -2 (x17)
+ - -3 (x13)
+ 'type':
+ type: string
+ path: armor.type
+ is_null: false
+ values: 55
+ different_values: 1 (all same)
+ variants: "Item" (x55)
+ [bulk_raw]:
+ type: string
+ path: armor.bulk_raw
+ is_null: true
+ values: 53
+ different_values: 6
+ variants:
+ - "2" (x18)
+ - "1" (x15)
+ - "L" (x7)
+ - "3" (x6)
+ - "4" (x4)
+ - "5" (x3)
+ 'url':
+ type: string
+ path: armor.url
+ is_null: false
+ values: 55
+ different_values: 55 (all different)
+ variants: [omitted]
+ [dex_cap]:
+ type: integer
+ path: armor.dex_cap
+ is_null: true
+ values: 53
+ different_values: 6
+ variants:
+ - 1 (x13)
+ - 3 (x12)
+ - 2 (x11)
+ - 0 (x8)
+ - 4 (x5)
+ - 5 (x4)
+ 'id':
+ type: string
+ path: armor.id
+ is_null: false
+ values: 55
+ different_values: 55 (all different)
+ variants: [omitted]
+ 'item_category':
+ type: string
+ path: armor.item_category
+ is_null: false
+ values: 55
+ different_values: 1 (all same)
+ variants: "Armor" (x55)
+ 'item_subcategory':
+ type: string
+ path: armor.item_subcategory
+ is_null: false
+ values: 55
+ different_values: 1 (all same)
+ variants: "Base Armor" (x55)
+ 'source_category':
+ type: array
+ path: armor.source_category
+ is_null: false
+ values: 55
+ min_count: 1
+ max_count: 2
+ value_type:
+ type: string
+ path: armor.source_category.[]
+ is_null: false
+ values: 57
+ different_values: 3
+ variants:
+ - "Rulebooks" (x52)
+ - "Lost Omens" (x4)
+ - "Adventures" (x1)
+ 'source_markdown':
+ type: string
+ path: armor.source_markdown
+ is_null: false
+ values: 55
+ different_values: 15
+ variants:
+ - "[Core Rulebook](/Sources.aspx?ID=1) pg. 275 4.0" (x13)
+ - "[Player Core](/Sources.aspx?ID=216) pg. 273 2.0" (x13)
+ - "[Treasure Vault](/Sources.aspx?ID=191) pg. 10 1.1" (x9)
+ - "[Treasure Vault](/Sources.aspx?ID=191) pg. 11 1.1" (x6)
+ - "[Treasure Vault](/Sources.aspx?ID=191) pg. 11 1.1, [War of Immortals](/Sources.aspx?ID=232) pg. 146" (x2)
+ - "[War of Immortals](/Sources.aspx?ID=232) pg. 146" (x2)
+ - "[War of Immortals](/Sources.aspx?ID=232) pg. 146, [Treasure Vault](/Sources.aspx?ID=191) pg. 11 1.1" (x2)
+ - "[Character Guide](/Sources.aspx?ID=12) pg. 80 2.0, [Treasure Vault](/Sources.aspx?ID=191) pg. 10 1.1" (x1)
+ - "[Shadows at Sundown](/Sources.aspx?ID=121) pg. 53" (x1)
+ - "[Knights of Lastwall](/Sources.aspx?ID=123) pg. 87" (x1)
+ - "[Treasure Vault](/Sources.aspx?ID=191) pg. 9 1.1" (x1)
+ - "[Treasure Vault](/Sources.aspx?ID=191) pg. 10 1.1, [Character Guide](/Sources.aspx?ID=12) pg. 80 2.0" (x1)
+ - "[Treasure Vault](/Sources.aspx?ID=191) pg. 10 1.1, [War of Immortals](/Sources.aspx?ID=232) pg. 146" (x1)
+ - "[Firebrands](/Sources.aspx?ID=196) pg. 83 2.0" (x1)
+ - "[War of Immortals](/Sources.aspx?ID=232) pg. 146, [Treasure Vault](/Sources.aspx?ID=191) pg. 10 1.1" (x1)
+ 'weakness':
+ type: object
+ path: armor.weakness
+ is_null: false
+ values: 55
+ schema:
+ [legacy_id]:
+ type: array
+ path: armor.legacy_id
+ is_null: true
+ values: 13
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: armor.legacy_id.[]
+ is_null: false
+ values: 13
+ different_values: 13
+ variants:
+ - "armor-1" (x1)
+ - "armor-2" (x1)
+ - "armor-3" (x1)
+ - "armor-4" (x1)
+ - "armor-5" (x1)
+ - "armor-6" (x1)
+ - "armor-7" (x1)
+ - "armor-8" (x1)
+ - "armor-9" (x1)
+ - "armor-10" (x1)
+ - "armor-11" (x1)
+ - "armor-12" (x1)
+ - "armor-13" (x1)
+ [source_group]:
+ type: array
+ path: armor.source_group
+ is_null: true
+ values: 1
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: armor.source_group.[]
+ is_null: false
+ values: 1
+ different_values: 1 (all same)
+ variants: "Shadows at Sundown" (x1)
+ 'level':
+ type: integer
+ path: armor.level
+ is_null: false
+ values: 55
+ different_values: 3
+ variants:
+ - 0 (x40)
+ - 2 (x8)
+ - 1 (x7)
+ 'markdown':
+ type: string
+ path: armor.markdown
+ is_null: false
+ values: 55
+ different_values: 55 (all different)
+ variants: [omitted]
+ 'name':
+ type: string
+ path: armor.name
+ is_null: false
+ values: 55
+ different_values: 38
+ variants: [omitted]
+ 'pfs':
+ type: string
+ path: armor.pfs
+ is_null: false
+ values: 55
+ different_values: 2
+ variants:
+ - "Standard" (x54)
+ - "Limited" (x1)
+ 'primary_source_category':
+ type: string
+ path: armor.primary_source_category
+ is_null: false
+ values: 55
+ different_values: 3
+ variants:
+ - "Rulebooks" (x51)
+ - "Lost Omens" (x3)
+ - "Adventures" (x1)
+ 'rarity':
+ type: string
+ path: armor.rarity
+ is_null: false
+ values: 55
+ different_values: 2
+ variants:
+ - "common" (x49)
+ - "uncommon" (x6)
+ 'rarity_id':
+ type: integer
+ path: armor.rarity_id
+ is_null: false
+ values: 55
+ different_values: 2
+ variants:
+ - 1 (x49)
+ - 2 (x6)
+ 'source':
+ type: array
+ path: armor.source
+ is_null: false
+ values: 55
+ min_count: 1
+ max_count: 2
+ value_type:
+ type: string
+ path: armor.source.[]
+ is_null: false
+ values: 63
+ different_values: 8
+ variants:
+ - "Treasure Vault" (x24)
+ - "Core Rulebook" (x13)
+ - "Player Core" (x13)
+ - "War of Immortals" (x8)
+ - "Character Guide" (x2)
+ - "Shadows at Sundown" (x1)
+ - "Knights of Lastwall" (x1)
+ - "Firebrands" (x1)
+ [price_raw]:
+ type: string
+ path: armor.price_raw
+ is_null: true
+ values: 53
+ different_values: 19
+ variants:
+ - "5 gp" (x7)
+ - "2 gp" (x6)
+ - "3 gp" (x5)
+ - "6 gp" (x5)
+ - "4 gp" (x4)
+ - "35 gp" (x4)
+ - "2 sp" (x3)
+ - "1 sp" (x2)
+ - "8 gp" (x2)
+ - "13 gp" (x2)
+ - "18 gp" (x2)
+ - "30 gp" (x2)
+ - "20 gp" (x2)
+ - "10 gp" (x2)
+ - "33 gp" (x1)
+ - "32 gp" (x1)
+ - "7 gp" (x1)
+ - "9 gp" (x1)
+ - "1 gp, 5 sp" (x1)
+ [remaster_id]:
+ type: array
+ path: armor.remaster_id
+ is_null: true
+ values: 13
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: armor.remaster_id.[]
+ is_null: false
+ values: 13
+ different_values: 13
+ variants:
+ - "armor-38" (x1)
+ - "armor-39" (x1)
+ - "armor-40" (x1)
+ - "armor-41" (x1)
+ - "armor-42" (x1)
+ - "armor-43" (x1)
+ - "armor-44" (x1)
+ - "armor-45" (x1)
+ - "armor-46" (x1)
+ - "armor-47" (x1)
+ - "armor-48" (x1)
+ - "armor-49" (x1)
+ - "armor-50" (x1)
+ 'resistance':
+ type: object
+ path: armor.resistance
+ is_null: false
+ values: 55
+ schema:
+ [primary_source_group]:
+ type: string
+ path: armor.primary_source_group
+ is_null: true
+ values: 1
+ different_values: 1 (all same)
+ variants: "Shadows at Sundown" (x1)
+ 'release_date':
+ type: string
+ path: armor.release_date
+ is_null: false
+ values: 55
+ different_values: 7
+ variants:
+ - "2023-02-22" (x20)
+ - "2019-08-01" (x13)
+ - "2023-11-15" (x13)
+ - "2024-10-30" (x5)
+ - "2022-05-25" (x2)
+ - "2019-10-16" (x1)
+ - "2023-03-29" (x1)
+ 'search_markdown':
+ type: string
+ path: armor.search_markdown
+ is_null: false
+ values: 55
+ different_values: 55 (all different)
+ variants: [omitted]
+ [speed_penalty]:
+ type: string
+ path: armor.speed_penalty
+ is_null: true
+ values: 30
+ different_values: 2
+ variants:
+ - "-5 ft." (x17)
+ - "-10 ft." (x13)
+ [strength]:
+ type: integer
+ path: armor.strength
+ is_null: true
+ values: 49
+ different_values: 5
+ variants:
+ - 3 (x14)
+ - 1 (x11)
+ - 2 (x10)
+ - 0 (x7)
+ - 4 (x7)
+ [trait]:
+ type: array
+ path: armor.trait
+ is_null: true
+ values: 36
+ min_count: 1
+ max_count: 3
+ value_type:
+ type: string
+ path: armor.trait.[]
+ is_null: false
+ values: 54
+ different_values: 12
+ variants:
+ - "Comfort" (x8)
+ - "Bulwark" (x8)
+ - "Laminar" (x8)
+ - "Flexible" (x7)
+ - "Noisy" (x6)
+ - "Uncommon" (x6)
+ - "Adjusted" (x3)
+ - "Entrench" (x2)
+ - "Hindering" (x2)
+ - "Aquadynamic" (x2)
+ - "Ponderous" (x1)
+ - "Inscribed" (x1)
diff --git a/output/aonprd/article.yaml b/output/aonprd/article.yaml
new file mode 100644
index 0000000..ea9dace
--- /dev/null
+++ b/output/aonprd/article.yaml
@@ -0,0 +1,187 @@
+name: article
+values: 76
+schema:
+ 'category':
+ type: string
+ path: article.category
+ is_null: false
+ values: 76
+ different_values: 1 (all same)
+ variants: "article" (x76)
+ 'id':
+ type: string
+ path: article.id
+ is_null: false
+ values: 76
+ different_values: 76 (all different)
+ variants: [omitted]
+ 'markdown':
+ type: string
+ path: article.markdown
+ is_null: false
+ values: 76
+ different_values: 76 (all different)
+ variants: [omitted]
+ 'name':
+ type: string
+ path: article.name
+ is_null: false
+ values: 76
+ different_values: 76 (all different)
+ variants: [omitted]
+ 'primary_source_category':
+ type: string
+ path: article.primary_source_category
+ is_null: false
+ values: 76
+ different_values: 1 (all same)
+ variants: "Adventure Paths" (x76)
+ 'primary_source_group':
+ type: string
+ path: article.primary_source_group
+ is_null: false
+ values: 76
+ different_values: 13
+ variants:
+ - "Extinction Curse" (x11)
+ - "Agents of Edgewatch" (x11)
+ - "Age of Ashes" (x9)
+ - "Strength of Thousands" (x9)
+ - "Blood Lords" (x9)
+ - "Abomination Vaults" (x5)
+ - "Fists of the Ruby Phoenix" (x5)
+ - "Sky King's Tomb" (x5)
+ - "Quest for the Frozen Flame" (x4)
+ - "Outlaws of Alkenstar" (x3)
+ - "Gatewalkers" (x3)
+ - "Stolen Fate" (x1)
+ - "Season of Ghosts" (x1)
+ 'rarity':
+ type: string
+ path: article.rarity
+ is_null: false
+ values: 76
+ different_values: 1 (all same)
+ variants: "common" (x76)
+ 'rarity_id':
+ type: integer
+ path: article.rarity_id
+ is_null: false
+ values: 76
+ different_values: 1 (all same)
+ variants: 1 (x76)
+ 'release_date':
+ type: string
+ path: article.release_date
+ is_null: false
+ values: 76
+ different_values: 46
+ variants: [omitted]
+ 'resistance':
+ type: object
+ path: article.resistance
+ is_null: false
+ values: 76
+ schema:
+ 'search_markdown':
+ type: string
+ path: article.search_markdown
+ is_null: false
+ values: 76
+ different_values: 76 (all different)
+ variants: [omitted]
+ 'source':
+ type: array
+ path: article.source
+ is_null: false
+ values: 76
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: article.source.[]
+ is_null: false
+ values: 76
+ different_values: 50
+ variants: [omitted]
+ 'source_category':
+ type: array
+ path: article.source_category
+ is_null: false
+ values: 76
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: article.source_category.[]
+ is_null: false
+ values: 76
+ different_values: 1 (all same)
+ variants: "Adventure Paths" (x76)
+ 'source_group':
+ type: array
+ path: article.source_group
+ is_null: false
+ values: 76
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: article.source_group.[]
+ is_null: false
+ values: 76
+ different_values: 13
+ variants:
+ - "Extinction Curse" (x11)
+ - "Agents of Edgewatch" (x11)
+ - "Age of Ashes" (x9)
+ - "Strength of Thousands" (x9)
+ - "Blood Lords" (x9)
+ - "Abomination Vaults" (x5)
+ - "Fists of the Ruby Phoenix" (x5)
+ - "Sky King's Tomb" (x5)
+ - "Quest for the Frozen Flame" (x4)
+ - "Outlaws of Alkenstar" (x3)
+ - "Gatewalkers" (x3)
+ - "Stolen Fate" (x1)
+ - "Season of Ghosts" (x1)
+ 'source_markdown':
+ type: string
+ path: article.source_markdown
+ is_null: false
+ values: 76
+ different_values: 76 (all different)
+ variants: [omitted]
+ 'speed':
+ type: object
+ path: article.speed
+ is_null: false
+ values: 76
+ schema:
+ 'summary_markdown':
+ type: string
+ path: article.summary_markdown
+ is_null: false
+ values: 76
+ different_values: 76 (all different)
+ variants: [omitted]
+ 'type':
+ type: string
+ path: article.type
+ is_null: false
+ values: 76
+ different_values: 1 (all same)
+ variants: "Setting Article" (x76)
+ 'url':
+ type: string
+ path: article.url
+ is_null: false
+ values: 76
+ different_values: 76 (all different)
+ variants: [omitted]
+ 'weakness':
+ type: object
+ path: article.weakness
+ is_null: false
+ values: 76
+ schema:
diff --git a/output/aonprd/background.yaml b/output/aonprd/background.yaml
new file mode 100644
index 0000000..849061e
--- /dev/null
+++ b/output/aonprd/background.yaml
@@ -0,0 +1,370 @@
+name: background
+values: 484
+schema:
+ [attribute]:
+ type: array
+ path: background.attribute
+ is_null: true
+ values: 464
+ min_count: 1
+ max_count: 2
+ value_type:
+ type: string
+ path: background.attribute.[]
+ is_null: false
+ values: 919
+ different_values: 6
+ variants:
+ - "Wisdom" (x185)
+ - "Intelligence" (x177)
+ - "Charisma" (x176)
+ - "Constitution" (x142)
+ - "Dexterity" (x132)
+ - "Strength" (x107)
+ 'category':
+ type: string
+ path: background.category
+ is_null: false
+ values: 484
+ different_values: 1 (all same)
+ variants: "background" (x484)
+ [feat_markdown]:
+ type: string
+ path: background.feat_markdown
+ is_null: true
+ values: 418
+ different_values: 112
+ variants: [omitted]
+ 'id':
+ type: string
+ path: background.id
+ is_null: false
+ values: 484
+ different_values: 484 (all different)
+ variants: [omitted]
+ 'search_markdown':
+ type: string
+ path: background.search_markdown
+ is_null: false
+ values: 484
+ different_values: 484 (all different)
+ variants: [omitted]
+ 'source_category':
+ type: array
+ path: background.source_category
+ is_null: false
+ values: 484
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: background.source_category.[]
+ is_null: false
+ values: 484
+ different_values: 7
+ variants:
+ - "Rulebooks" (x209)
+ - "Lost Omens" (x134)
+ - "Adventure Paths" (x103)
+ - "Adventures" (x14)
+ - "Society" (x14)
+ - "Blog Posts" (x7)
+ - "Comics" (x3)
+ 'source_markdown':
+ type: string
+ path: background.source_markdown
+ is_null: false
+ values: 484
+ different_values: 118
+ variants: [omitted]
+ 'speed':
+ type: object
+ path: background.speed
+ is_null: false
+ values: 484
+ schema:
+ 'summary_markdown':
+ type: string
+ path: background.summary_markdown
+ is_null: false
+ values: 484
+ different_values: 432
+ variants: [omitted]
+ 'trait_markdown':
+ type: string
+ path: background.trait_markdown
+ is_null: false
+ values: 484
+ different_values: 7
+ variants:
+ - "" (x328)
+ - "[Rare](/Traits.aspx?ID=137)" (x89)
+ - "[Uncommon](/Traits.aspx?ID=159)" (x36)
+ - "[Uncommon](/Traits.aspx?ID=721)" (x16)
+ - "[Rare](/Traits.aspx?ID=683)" (x8)
+ - "[Legacy - Age of Ashes](/Traits.aspx?ID=270), [Rare](/Traits.aspx?ID=137)" (x4)
+ - "[Pervasive Magic](/Traits.aspx?ID=390), [Rare](/Traits.aspx?ID=137)" (x3)
+ 'type':
+ type: string
+ path: background.type
+ is_null: false
+ values: 484
+ different_values: 1 (all same)
+ variants: "Background" (x484)
+ 'url':
+ type: string
+ path: background.url
+ is_null: false
+ values: 484
+ different_values: 484 (all different)
+ variants: [omitted]
+ 'weakness':
+ type: object
+ path: background.weakness
+ is_null: false
+ values: 484
+ schema:
+ [legacy_id]:
+ type: array
+ path: background.legacy_id
+ is_null: true
+ values: 65
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: background.legacy_id.[]
+ is_null: false
+ values: 65
+ different_values: 64
+ variants: [omitted]
+ [skill_markdown]:
+ type: string
+ path: background.skill_markdown
+ is_null: true
+ values: 481
+ different_values: 318
+ variants: [omitted]
+ 'markdown':
+ type: string
+ path: background.markdown
+ is_null: false
+ values: 484
+ different_values: 484 (all different)
+ variants: [omitted]
+ 'name':
+ type: string
+ path: background.name
+ is_null: false
+ values: 484
+ different_values: 420
+ variants: [omitted]
+ 'primary_source_category':
+ type: string
+ path: background.primary_source_category
+ is_null: false
+ values: 484
+ different_values: 7
+ variants:
+ - "Rulebooks" (x209)
+ - "Lost Omens" (x134)
+ - "Adventure Paths" (x103)
+ - "Adventures" (x14)
+ - "Society" (x14)
+ - "Blog Posts" (x7)
+ - "Comics" (x3)
+ 'rarity':
+ type: string
+ path: background.rarity
+ is_null: false
+ values: 484
+ different_values: 3
+ variants:
+ - "common" (x328)
+ - "rare" (x104)
+ - "uncommon" (x52)
+ 'rarity_id':
+ type: integer
+ path: background.rarity_id
+ is_null: false
+ values: 484
+ different_values: 3
+ variants:
+ - 1 (x328)
+ - 3 (x104)
+ - 2 (x52)
+ 'release_date':
+ type: string
+ path: background.release_date
+ is_null: false
+ values: 484
+ different_values: 45
+ variants: [omitted]
+ [pfs]:
+ type: string
+ path: background.pfs
+ is_null: true
+ values: 369
+ different_values: 2
+ variants:
+ - "Standard" (x350)
+ - "Limited" (x19)
+ 'resistance':
+ type: object
+ path: background.resistance
+ is_null: false
+ values: 484
+ schema:
+ [prerequisite_markdown]:
+ type: string
+ path: background.prerequisite_markdown
+ is_null: true
+ values: 5
+ different_values: 3
+ variants:
+ - "[Kobold](/Ancestries.aspx?ID=18) ancestry" (x3)
+ - "[Leshy](/Ancestries.aspx?ID=14) ancestry" (x1)
+ - "[Hobgoblin](/Ancestries.aspx?ID=13) Ancestry" (x1)
+ [primary_source_group]:
+ type: string
+ path: background.primary_source_group
+ is_null: true
+ values: 137
+ different_values: 19
+ variants:
+ - "Pathfinder Society" (x20)
+ - "Age of Ashes" (x14)
+ - "Agents of Edgewatch" (x11)
+ - "Extinction Curse" (x10)
+ - "Abomination Vaults" (x7)
+ - "Kingmaker" (x7)
+ - "Stolen Fate" (x7)
+ - "Rusthenge" (x7)
+ - "Fists of the Ruby Phoenix" (x6)
+ - "Quest for the Frozen Flame" (x6)
+ - "Outlaws of Alkenstar" (x6)
+ - "Blood Lords" (x6)
+ - "Gatewalkers" (x6)
+ - "Sky King's Tomb" (x6)
+ - "Season of Ghosts" (x6)
+ - "The Fall of Plaguestone" (x5)
+ - "Strength of Thousands" (x5)
+ - "Little Trouble in Big Absalom" (x1)
+ - "Crown of the Kobold King" (x1)
+ [region]:
+ type: string
+ path: background.region
+ is_null: true
+ values: 73
+ different_values: 10
+ variants:
+ - "Absalom and Starstone Isle" (x8)
+ - "Eye of Dread" (x8)
+ - "Mwangi Expanse" (x8)
+ - "Broken Lands" (x7)
+ - "Golden Road" (x7)
+ - "High Seas" (x7)
+ - "Impossible Lands" (x7)
+ - "Old Cheliax" (x7)
+ - "Saga Lands" (x7)
+ - "Shining Kingdoms" (x7)
+ [remaster_id]:
+ type: array
+ path: background.remaster_id
+ is_null: true
+ values: 64
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: background.remaster_id.[]
+ is_null: false
+ values: 64
+ different_values: 64
+ variants: [omitted]
+ 'source':
+ type: array
+ path: background.source
+ is_null: false
+ values: 484
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: background.source.[]
+ is_null: false
+ values: 484
+ different_values: 50
+ variants: [omitted]
+ [source_group]:
+ type: array
+ path: background.source_group
+ is_null: true
+ values: 137
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: background.source_group.[]
+ is_null: false
+ values: 137
+ different_values: 19
+ variants:
+ - "Pathfinder Society" (x20)
+ - "Age of Ashes" (x14)
+ - "Agents of Edgewatch" (x11)
+ - "Extinction Curse" (x10)
+ - "Abomination Vaults" (x7)
+ - "Kingmaker" (x7)
+ - "Stolen Fate" (x7)
+ - "Rusthenge" (x7)
+ - "Fists of the Ruby Phoenix" (x6)
+ - "Quest for the Frozen Flame" (x6)
+ - "Outlaws of Alkenstar" (x6)
+ - "Blood Lords" (x6)
+ - "Gatewalkers" (x6)
+ - "Sky King's Tomb" (x6)
+ - "Season of Ghosts" (x6)
+ - "The Fall of Plaguestone" (x5)
+ - "Strength of Thousands" (x5)
+ - "Little Trouble in Big Absalom" (x1)
+ - "Crown of the Kobold King" (x1)
+ [spoilers]:
+ type: string
+ path: background.spoilers
+ is_null: true
+ values: 67
+ different_values: 14
+ variants:
+ - "Kingmaker" (x7)
+ - "Pathfinder Society" (x7)
+ - "Stolen Fate" (x7)
+ - "Rusthenge" (x7)
+ - "Quest for the Frozen Flame" (x6)
+ - "Outlaws of Alkenstar" (x6)
+ - "Blood Lords" (x6)
+ - "Gatewalkers" (x6)
+ - "Season of Ghosts" (x6)
+ - "Age of Ashes" (x4)
+ - "Fists of the Ruby Phoenix" (x2)
+ - "Extinction Curse" (x1)
+ - "Little Trouble in Big Absalom" (x1)
+ - "Crown of the Kobold King" (x1)
+ [trait]:
+ type: array
+ path: background.trait
+ is_null: true
+ values: 156
+ min_count: 1
+ max_count: 2
+ value_type:
+ type: string
+ path: background.trait.[]
+ is_null: false
+ values: 163
+ different_values: 4
+ variants:
+ - "Rare" (x104)
+ - "Uncommon" (x52)
+ - "Legacy" (x4)
+ - "Pervasive Magic" (x3)
diff --git a/output/aonprd/bloodline.yaml b/output/aonprd/bloodline.yaml
new file mode 100644
index 0000000..22905d7
--- /dev/null
+++ b/output/aonprd/bloodline.yaml
@@ -0,0 +1,351 @@
+name: bloodline
+values: 27
+schema:
+ 'bloodline_markdown':
+ type: string
+ path: bloodline.bloodline_markdown
+ is_null: false
+ values: 27
+ different_values: 17
+ variants:
+ - "Aberrant" (x2)
+ - "Angelic" (x2)
+ - "Demonic" (x2)
+ - "Diabolic" (x2)
+ - "Draconic" (x2)
+ - "Elemental" (x2)
+ - "Fey" (x2)
+ - "Hag" (x2)
+ - "Imperial" (x2)
+ - "Undead" (x2)
+ - "Genie" (x1)
+ - "Nymph" (x1)
+ - "Psychopomp" (x1)
+ - "Shadow" (x1)
+ - "Phoenix" (x1)
+ - "Wyrmblessed" (x1)
+ - "Harrow" (x1)
+ 'category':
+ type: string
+ path: bloodline.category
+ is_null: false
+ values: 27
+ different_values: 1 (all same)
+ variants: "bloodline" (x27)
+ 'id':
+ type: string
+ path: bloodline.id
+ is_null: false
+ values: 27
+ different_values: 27 (all different)
+ variants: [omitted]
+ 'legacy_id':
+ type: array
+ path: bloodline.legacy_id
+ is_null: false
+ values: 10
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: bloodline.legacy_id.[]
+ is_null: false
+ values: 10
+ different_values: 10
+ variants:
+ - "bloodline-1" (x1)
+ - "bloodline-2" (x1)
+ - "bloodline-3" (x1)
+ - "bloodline-4" (x1)
+ - "bloodline-5" (x1)
+ - "bloodline-6" (x1)
+ - "bloodline-7" (x1)
+ - "bloodline-8" (x1)
+ - "bloodline-9" (x1)
+ - "bloodline-10" (x1)
+ 'markdown':
+ type: string
+ path: bloodline.markdown
+ is_null: false
+ values: 27
+ different_values: 27 (all different)
+ variants: [omitted]
+ 'name':
+ type: string
+ path: bloodline.name
+ is_null: false
+ values: 27
+ different_values: 17
+ variants:
+ - "Aberrant" (x2)
+ - "Angelic" (x2)
+ - "Demonic" (x2)
+ - "Diabolic" (x2)
+ - "Draconic" (x2)
+ - "Elemental" (x2)
+ - "Fey" (x2)
+ - "Hag" (x2)
+ - "Imperial" (x2)
+ - "Undead" (x2)
+ - "Genie" (x1)
+ - "Nymph" (x1)
+ - "Psychopomp" (x1)
+ - "Shadow" (x1)
+ - "Phoenix" (x1)
+ - "Wyrmblessed" (x1)
+ - "Harrow" (x1)
+ 'pfs':
+ type: string
+ path: bloodline.pfs
+ is_null: false
+ values: 27
+ different_values: 2
+ variants:
+ - "Standard" (x25)
+ - "Limited" (x2)
+ 'primary_source_category':
+ type: string
+ path: bloodline.primary_source_category
+ is_null: false
+ values: 27
+ different_values: 3
+ variants:
+ - "Rulebooks" (x24)
+ - "Adventure Paths" (x2)
+ - "Lost Omens" (x1)
+ 'rarity':
+ type: string
+ path: bloodline.rarity
+ is_null: false
+ values: 27
+ different_values: 2
+ variants:
+ - "common" (x26)
+ - "uncommon" (x1)
+ 'rarity_id':
+ type: integer
+ path: bloodline.rarity_id
+ is_null: false
+ values: 27
+ different_values: 2
+ variants:
+ - 1 (x26)
+ - 2 (x1)
+ 'release_date':
+ type: string
+ path: bloodline.release_date
+ is_null: false
+ values: 27
+ different_values: 5
+ variants:
+ - "2019-08-01" (x10)
+ - "2024-08-01" (x10)
+ - "2020-07-30" (x4)
+ - "2021-07-07" (x2)
+ - "2023-04-13" (x1)
+ [primary_source_group]:
+ type: string
+ path: bloodline.primary_source_group
+ is_null: true
+ values: 2
+ different_values: 2
+ variants:
+ - "Fists of the Ruby Phoenix" (x1)
+ - "Stolen Fate" (x1)
+ 'resistance':
+ type: object
+ path: bloodline.resistance
+ is_null: false
+ values: 27
+ schema:
+ 'search_markdown':
+ type: string
+ path: bloodline.search_markdown
+ is_null: false
+ values: 27
+ different_values: 27 (all different)
+ variants: [omitted]
+ 'source':
+ type: array
+ path: bloodline.source
+ is_null: false
+ values: 27
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: bloodline.source.[]
+ is_null: false
+ values: 27
+ different_values: 6
+ variants:
+ - "Core Rulebook" (x10)
+ - "Player Core 2" (x10)
+ - "Advanced Player's Guide" (x4)
+ - "Pathfinder #168: King of the Mountain" (x1)
+ - "The Mwangi Expanse" (x1)
+ - "Stolen Fate Player's Guide" (x1)
+ 'source_category':
+ type: array
+ path: bloodline.source_category
+ is_null: false
+ values: 27
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: bloodline.source_category.[]
+ is_null: false
+ values: 27
+ different_values: 3
+ variants:
+ - "Rulebooks" (x24)
+ - "Adventure Paths" (x2)
+ - "Lost Omens" (x1)
+ 'spell_markdown':
+ type: string
+ path: bloodline.spell_markdown
+ is_null: false
+ values: 27
+ different_values: 27 (all different)
+ variants: [omitted]
+ 'summary_markdown':
+ type: string
+ path: bloodline.summary_markdown
+ is_null: false
+ values: 27
+ different_values: 25
+ variants: [omitted]
+ [tradition]:
+ type: array
+ path: bloodline.tradition
+ is_null: true
+ values: 26
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: bloodline.tradition.[]
+ is_null: false
+ values: 26
+ different_values: 4
+ variants:
+ - "Divine" (x10)
+ - "Occult" (x6)
+ - "Primal" (x6)
+ - "Arcane" (x4)
+ [trait]:
+ type: array
+ path: bloodline.trait
+ is_null: true
+ values: 1
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: bloodline.trait.[]
+ is_null: false
+ values: 1
+ different_values: 1 (all same)
+ variants: "Uncommon" (x1)
+ 'trait_markdown':
+ type: string
+ path: bloodline.trait_markdown
+ is_null: false
+ values: 27
+ different_values: 2
+ variants:
+ - "" (x26)
+ - "[Uncommon](/Traits.aspx?ID=159)" (x1)
+ 'type':
+ type: string
+ path: bloodline.type
+ is_null: false
+ values: 27
+ different_values: 1 (all same)
+ variants: "Sorcerer Bloodline" (x27)
+ 'url':
+ type: string
+ path: bloodline.url
+ is_null: false
+ values: 27
+ different_values: 27 (all different)
+ variants: [omitted]
+ 'weakness':
+ type: object
+ path: bloodline.weakness
+ is_null: false
+ values: 27
+ schema:
+ [remaster_id]:
+ type: array
+ path: bloodline.remaster_id
+ is_null: true
+ values: 10
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: bloodline.remaster_id.[]
+ is_null: false
+ values: 10
+ different_values: 10
+ variants:
+ - "bloodline-19" (x1)
+ - "bloodline-20" (x1)
+ - "bloodline-21" (x1)
+ - "bloodline-22" (x1)
+ - "bloodline-23" (x1)
+ - "bloodline-24" (x1)
+ - "bloodline-25" (x1)
+ - "bloodline-26" (x1)
+ - "bloodline-27" (x1)
+ - "bloodline-28" (x1)
+ [source_group]:
+ type: array
+ path: bloodline.source_group
+ is_null: true
+ values: 2
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: bloodline.source_group.[]
+ is_null: false
+ values: 2
+ different_values: 2
+ variants:
+ - "Fists of the Ruby Phoenix" (x1)
+ - "Stolen Fate" (x1)
+ 'source_markdown':
+ type: string
+ path: bloodline.source_markdown
+ is_null: false
+ values: 27
+ different_values: 12
+ variants:
+ - "[Advanced Player's Guide](/Sources.aspx?ID=39) pg. 138 2.0" (x4)
+ - "[Player Core 2](/Sources.aspx?ID=227) pg. 150 1.1" (x4)
+ - "[Core Rulebook](/Sources.aspx?ID=1) pg. 195 4.0" (x3)
+ - "[Core Rulebook](/Sources.aspx?ID=1) pg. 196 4.0" (x3)
+ - "[Player Core 2](/Sources.aspx?ID=227) pg. 152 1.1" (x3)
+ - "[Core Rulebook](/Sources.aspx?ID=1) pg. 197 4.0" (x2)
+ - "[Core Rulebook](/Sources.aspx?ID=1) pg. 198 4.0" (x2)
+ - "[Player Core 2](/Sources.aspx?ID=227) pg. 151 1.1" (x2)
+ - "[Pathfinder #168: King of the Mountain](/Sources.aspx?ID=87) pg. 74" (x1)
+ - "[The Mwangi Expanse](/Sources.aspx?ID=89) pg. 75 2.0" (x1)
+ - "[Stolen Fate Player's Guide](/Sources.aspx?ID=197) pg. 15" (x1)
+ - "[Player Core 2](/Sources.aspx?ID=227) pg. 149 1.1" (x1)
+ 'speed':
+ type: object
+ path: bloodline.speed
+ is_null: false
+ values: 27
+ schema:
+ [spoilers]:
+ type: string
+ path: bloodline.spoilers
+ is_null: true
+ values: 1
+ different_values: 1 (all same)
+ variants: "Fists of the Ruby Phoenix" (x1)
diff --git a/output/aonprd/campsite-meal.yaml b/output/aonprd/campsite-meal.yaml
new file mode 100644
index 0000000..3c43e5e
--- /dev/null
+++ b/output/aonprd/campsite-meal.yaml
@@ -0,0 +1,273 @@
+name: campsite-meal
+values: 27
+schema:
+ 'category':
+ type: string
+ path: campsite-meal.category
+ is_null: false
+ values: 27
+ different_values: 1 (all same)
+ variants: "campsite-meal" (x27)
+ 'id':
+ type: string
+ path: campsite-meal.id
+ is_null: false
+ values: 27
+ different_values: 27 (all different)
+ variants: [omitted]
+ 'level':
+ type: integer
+ path: campsite-meal.level
+ is_null: false
+ values: 27
+ different_values: 18
+ variants:
+ - 5 (x2)
+ - 3 (x2)
+ - 4 (x2)
+ - 1 (x2)
+ - 6 (x2)
+ - 0 (x2)
+ - 8 (x2)
+ - 7 (x2)
+ - 2 (x2)
+ - 18 (x1)
+ - 20 (x1)
+ - 13 (x1)
+ - 16 (x1)
+ - 10 (x1)
+ - 14 (x1)
+ - 11 (x1)
+ - 12 (x1)
+ - 9 (x1)
+ 'markdown':
+ type: string
+ path: campsite-meal.markdown
+ is_null: false
+ values: 27
+ different_values: 27 (all different)
+ variants: [omitted]
+ 'name':
+ type: string
+ path: campsite-meal.name
+ is_null: false
+ values: 27
+ different_values: 27 (all different)
+ variants: [omitted]
+ 'primary_source_category':
+ type: string
+ path: campsite-meal.primary_source_category
+ is_null: false
+ values: 27
+ different_values: 1 (all same)
+ variants: "Adventure Paths" (x27)
+ 'primary_source_group':
+ type: string
+ path: campsite-meal.primary_source_group
+ is_null: false
+ values: 27
+ different_values: 1 (all same)
+ variants: "Kingmaker" (x27)
+ 'rarity':
+ type: string
+ path: campsite-meal.rarity
+ is_null: false
+ values: 27
+ different_values: 3
+ variants:
+ - "common" (x15)
+ - "uncommon" (x9)
+ - "rare" (x3)
+ 'rarity_id':
+ type: integer
+ path: campsite-meal.rarity_id
+ is_null: false
+ values: 27
+ different_values: 3
+ variants:
+ - 1 (x15)
+ - 2 (x9)
+ - 3 (x3)
+ 'release_date':
+ type: string
+ path: campsite-meal.release_date
+ is_null: false
+ values: 27
+ different_values: 1 (all same)
+ variants: "2022-10-26" (x27)
+ [requirement_markdown]:
+ type: string
+ path: campsite-meal.requirement_markdown
+ is_null: true
+ values: 7
+ different_values: 7
+ variants:
+ - "legendary in [Arcana](/Skills.aspx?ID=2) or [Nature](/Skills.aspx?ID=10)" (x1)
+ - "ability to cast a [cold](/Traits.aspx?ID=27) spell or create a cold effect via magic" (x1)
+ - "must be cooked while camping in the [First World](/Planes.aspx?ID=10) (including associated demiplanes like Thousand Breaths or the Lantern Kingdom)" (x1)
+ - "legendary in [Nature](/Skills.aspx?ID=10)" (x1)
+ - "master in [Religion](/Skills.aspx?ID=13)" (x1)
+ - "trained in [Arcana](/Skills.aspx?ID=2)" (x1)
+ - "ability to cast a [fire](/Traits.aspx?ID=72) spell or create a fire effect" (x1)
+ 'resistance':
+ type: object
+ path: campsite-meal.resistance
+ is_null: false
+ values: 27
+ schema:
+ 'search_markdown':
+ type: string
+ path: campsite-meal.search_markdown
+ is_null: false
+ values: 27
+ different_values: 27 (all different)
+ variants: [omitted]
+ 'source':
+ type: array
+ path: campsite-meal.source
+ is_null: false
+ values: 27
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: campsite-meal.source.[]
+ is_null: false
+ values: 27
+ different_values: 1 (all same)
+ variants: "Kingmaker Companion Guide" (x27)
+ 'source_category':
+ type: array
+ path: campsite-meal.source_category
+ is_null: false
+ values: 27
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: campsite-meal.source_category.[]
+ is_null: false
+ values: 27
+ different_values: 1 (all same)
+ variants: "Adventure Paths" (x27)
+ 'source_group':
+ type: array
+ path: campsite-meal.source_group
+ is_null: false
+ values: 27
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: campsite-meal.source_group.[]
+ is_null: false
+ values: 27
+ different_values: 1 (all same)
+ variants: "Kingmaker" (x27)
+ 'source_markdown':
+ type: string
+ path: campsite-meal.source_markdown
+ is_null: false
+ values: 27
+ different_values: 6
+ variants:
+ - "[Kingmaker Companion Guide](/Sources.aspx?ID=151) pg. 115" (x5)
+ - "[Kingmaker Companion Guide](/Sources.aspx?ID=151) pg. 116" (x5)
+ - "[Kingmaker Companion Guide](/Sources.aspx?ID=151) pg. 119" (x5)
+ - "[Kingmaker Companion Guide](/Sources.aspx?ID=151) pg. 114" (x4)
+ - "[Kingmaker Companion Guide](/Sources.aspx?ID=151) pg. 117" (x4)
+ - "[Kingmaker Companion Guide](/Sources.aspx?ID=151) pg. 118" (x4)
+ 'speed':
+ type: object
+ path: campsite-meal.speed
+ is_null: false
+ values: 27
+ schema:
+ 'summary_markdown':
+ type: string
+ path: campsite-meal.summary_markdown
+ is_null: false
+ values: 27
+ different_values: 27 (all different)
+ variants: [omitted]
+ 'trait':
+ type: array
+ path: campsite-meal.trait
+ is_null: false
+ values: 27
+ min_count: 1
+ max_count: 3
+ value_type:
+ type: string
+ path: campsite-meal.trait.[]
+ is_null: false
+ values: 40
+ different_values: 4
+ variants:
+ - "Meal" (x27)
+ - "Uncommon" (x9)
+ - "Rare" (x3)
+ - "Apex" (x1)
+ 'trait_markdown':
+ type: string
+ path: campsite-meal.trait_markdown
+ is_null: false
+ values: 27
+ different_values: 4
+ variants:
+ - "[Meal](/Traits.aspx?ID=466)" (x15)
+ - "[Meal](/Traits.aspx?ID=466), [Uncommon](/Traits.aspx?ID=159)" (x9)
+ - "[Meal](/Traits.aspx?ID=466), [Rare](/Traits.aspx?ID=137)" (x2)
+ - "[Apex](/Traits.aspx?ID=10), [Meal](/Traits.aspx?ID=466), [Rare](/Traits.aspx?ID=137)" (x1)
+ 'type':
+ type: string
+ path: campsite-meal.type
+ is_null: false
+ values: 27
+ different_values: 1 (all same)
+ variants: "Campsite Meal" (x27)
+ 'url':
+ type: string
+ path: campsite-meal.url
+ is_null: false
+ values: 27
+ different_values: 27 (all different)
+ variants: [omitted]
+ 'weakness':
+ type: object
+ path: campsite-meal.weakness
+ is_null: false
+ values: 27
+ schema:
+ [price_raw]:
+ type: string
+ path: campsite-meal.price_raw
+ is_null: true
+ values: 26
+ different_values: 18
+ variants:
+ - "8 gp" (x2)
+ - "3 gp" (x2)
+ - "5 sp" (x2)
+ - "1 gp" (x2)
+ - "13 gp" (x2)
+ - "25 gp" (x2)
+ - "18 gp" (x2)
+ - "2 gp" (x2)
+ - "1,200 gp" (x1)
+ - "3,500 gp" (x1)
+ - "5 gp" (x1)
+ - "150 gp" (x1)
+ - "500 gp" (x1)
+ - "50 gp" (x1)
+ - "225 gp" (x1)
+ - "70 gp" (x1)
+ - "100 gp" (x1)
+ - "35 gp" (x1)
+ [spoilers]:
+ type: string
+ path: campsite-meal.spoilers
+ is_null: true
+ values: 12
+ different_values: 1 (all same)
+ variants: "Kingmaker" (x12)
diff --git a/output/aonprd/category-page.yaml b/output/aonprd/category-page.yaml
new file mode 100644
index 0000000..5c5de33
--- /dev/null
+++ b/output/aonprd/category-page.yaml
@@ -0,0 +1,235 @@
+name: category-page
+values: 160
+schema:
+ 'category':
+ type: string
+ path: category-page.category
+ is_null: false
+ values: 160
+ different_values: 1 (all same)
+ variants: "category-page" (x160)
+ 'id':
+ type: string
+ path: category-page.id
+ is_null: false
+ values: 160
+ different_values: 160 (all different)
+ variants: [omitted]
+ 'source':
+ type: array
+ path: category-page.source
+ is_null: false
+ values: 160
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: category-page.source.[]
+ is_null: false
+ values: 160
+ different_values: 19
+ variants:
+ - "Core Rulebook" (x45)
+ - "Player Core" (x41)
+ - "Advanced Player's Guide" (x9)
+ - "Kingmaker Adventure Path" (x9)
+ - "Player Core 2" (x8)
+ - "War of Immortals" (x8)
+ - "Dark Archive" (x7)
+ - "GM Core" (x7)
+ - "Gamemastery Guide" (x6)
+ - "Bestiary" (x4)
+ - "Guns & Gears" (x4)
+ - "Kingmaker Companion Guide" (x3)
+ - "Character Guide" (x2)
+ - "Secrets of Magic" (x2)
+ - "The Fall of Plaguestone" (x1)
+ - "Book of the Dead" (x1)
+ - "Treasure Vault" (x1)
+ - "Rage of Elements" (x1)
+ - "Howl of the Wild" (x1)
+ 'source_category':
+ type: array
+ path: category-page.source_category
+ is_null: false
+ values: 160
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: category-page.source_category.[]
+ is_null: false
+ values: 160
+ different_values: 4
+ variants:
+ - "Rulebooks" (x145)
+ - "Adventure Paths" (x12)
+ - "Lost Omens" (x2)
+ - "Adventures" (x1)
+ 'source_markdown':
+ type: string
+ path: category-page.source_markdown
+ is_null: false
+ values: 160
+ different_values: 151
+ variants: [omitted]
+ 'speed':
+ type: object
+ path: category-page.speed
+ is_null: false
+ values: 160
+ schema:
+ 'summary_markdown':
+ type: string
+ path: category-page.summary_markdown
+ is_null: false
+ values: 160
+ different_values: 139
+ variants: [omitted]
+ 'type':
+ type: string
+ path: category-page.type
+ is_null: false
+ values: 160
+ different_values: 1 (all same)
+ variants: "Category Page" (x160)
+ 'url':
+ type: string
+ path: category-page.url
+ is_null: false
+ values: 160
+ different_values: 100
+ variants: [omitted]
+ 'weakness':
+ type: object
+ path: category-page.weakness
+ is_null: false
+ values: 160
+ schema:
+ [legacy_id]:
+ type: array
+ path: category-page.legacy_id
+ is_null: true
+ values: 56
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: category-page.legacy_id.[]
+ is_null: false
+ values: 56
+ different_values: 56
+ variants: [omitted]
+ 'markdown':
+ type: string
+ path: category-page.markdown
+ is_null: false
+ values: 160
+ different_values: 160 (all different)
+ variants: [omitted]
+ 'name':
+ type: string
+ path: category-page.name
+ is_null: false
+ values: 160
+ different_values: 104
+ variants: [omitted]
+ 'primary_source_category':
+ type: string
+ path: category-page.primary_source_category
+ is_null: false
+ values: 160
+ different_values: 4
+ variants:
+ - "Rulebooks" (x145)
+ - "Adventure Paths" (x12)
+ - "Lost Omens" (x2)
+ - "Adventures" (x1)
+ 'rarity':
+ type: string
+ path: category-page.rarity
+ is_null: false
+ values: 160
+ different_values: 1 (all same)
+ variants: "common" (x160)
+ 'rarity_id':
+ type: integer
+ path: category-page.rarity_id
+ is_null: false
+ values: 160
+ different_values: 1 (all same)
+ variants: 1 (x160)
+ 'release_date':
+ type: string
+ path: category-page.release_date
+ is_null: false
+ values: 160
+ different_values: 15
+ variants:
+ - "2019-08-01" (x50)
+ - "2023-11-15" (x48)
+ - "2022-10-26" (x12)
+ - "2020-07-30" (x9)
+ - "2024-08-01" (x8)
+ - "2024-10-30" (x8)
+ - "2022-07-27" (x7)
+ - "2020-02-26" (x6)
+ - "2021-10-13" (x4)
+ - "2019-10-16" (x2)
+ - "2021-09-01" (x2)
+ - "2022-04-27" (x1)
+ - "2023-02-22" (x1)
+ - "2023-08-02" (x1)
+ - "2024-05-29" (x1)
+ 'resistance':
+ type: object
+ path: category-page.resistance
+ is_null: false
+ values: 160
+ schema:
+ [primary_source_group]:
+ type: string
+ path: category-page.primary_source_group
+ is_null: true
+ values: 13
+ different_values: 2
+ variants:
+ - "Kingmaker" (x12)
+ - "The Fall of Plaguestone" (x1)
+ [remaster_id]:
+ type: array
+ path: category-page.remaster_id
+ is_null: true
+ values: 56
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: category-page.remaster_id.[]
+ is_null: false
+ values: 56
+ different_values: 56
+ variants: [omitted]
+ 'search_markdown':
+ type: string
+ path: category-page.search_markdown
+ is_null: false
+ values: 160
+ different_values: 160 (all different)
+ variants: [omitted]
+ [source_group]:
+ type: array
+ path: category-page.source_group
+ is_null: true
+ values: 13
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: category-page.source_group.[]
+ is_null: false
+ values: 13
+ different_values: 2
+ variants:
+ - "Kingmaker" (x12)
+ - "The Fall of Plaguestone" (x1)
diff --git a/output/aonprd/cause.yaml b/output/aonprd/cause.yaml
new file mode 100644
index 0000000..0b90b12
--- /dev/null
+++ b/output/aonprd/cause.yaml
@@ -0,0 +1,292 @@
+name: cause
+values: 13
+schema:
+ [alignment]:
+ type: string
+ path: cause.alignment
+ is_null: true
+ values: 6
+ different_values: 6
+ variants:
+ - "LG" (x1)
+ - "NG" (x1)
+ - "CG" (x1)
+ - "LE" (x1)
+ - "NE" (x1)
+ - "CE" (x1)
+ 'category':
+ type: string
+ path: cause.category
+ is_null: false
+ values: 13
+ different_values: 1 (all same)
+ variants: "cause" (x13)
+ 'id':
+ type: string
+ path: cause.id
+ is_null: false
+ values: 13
+ different_values: 13 (all different)
+ variants:
+ - "cause-1" (x1)
+ - "cause-2" (x1)
+ - "cause-3" (x1)
+ - "cause-4" (x1)
+ - "cause-5" (x1)
+ - "cause-6" (x1)
+ - "cause-8" (x1)
+ - "cause-9" (x1)
+ - "cause-10" (x1)
+ - "cause-11" (x1)
+ - "cause-12" (x1)
+ - "cause-13" (x1)
+ - "cause-14" (x1)
+ 'markdown':
+ type: string
+ path: cause.markdown
+ is_null: false
+ values: 13
+ different_values: 13 (all different)
+ variants: [omitted]
+ 'name':
+ type: string
+ path: cause.name
+ is_null: false
+ values: 13
+ different_values: 13 (all different)
+ variants:
+ - "Paladin" (x1)
+ - "Redeemer" (x1)
+ - "Liberator" (x1)
+ - "Tyrant" (x1)
+ - "Desecrator" (x1)
+ - "Antipaladin" (x1)
+ - "Desecration" (x1)
+ - "Grandeur" (x1)
+ - "Iniquity" (x1)
+ - "Justice" (x1)
+ - "Liberation" (x1)
+ - "Obedience" (x1)
+ - "Redemption" (x1)
+ [legacy_id]:
+ type: array
+ path: cause.legacy_id
+ is_null: true
+ values: 6
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: cause.legacy_id.[]
+ is_null: false
+ values: 6
+ different_values: 6
+ variants:
+ - "cause-5" (x1)
+ - "cause-6" (x1)
+ - "cause-1" (x1)
+ - "cause-3" (x1)
+ - "cause-4" (x1)
+ - "cause-2" (x1)
+ 'primary_source_category':
+ type: string
+ path: cause.primary_source_category
+ is_null: false
+ values: 13
+ different_values: 1 (all same)
+ variants: "Rulebooks" (x13)
+ 'rarity':
+ type: string
+ path: cause.rarity
+ is_null: false
+ values: 13
+ different_values: 1 (all same)
+ variants: "common" (x13)
+ 'rarity_id':
+ type: integer
+ path: cause.rarity_id
+ is_null: false
+ values: 13
+ different_values: 1 (all same)
+ variants: 1 (x13)
+ 'release_date':
+ type: string
+ path: cause.release_date
+ is_null: false
+ values: 13
+ different_values: 3
+ variants:
+ - "2024-08-01" (x7)
+ - "2019-08-01" (x3)
+ - "2020-07-30" (x3)
+ 'resistance':
+ type: object
+ path: cause.resistance
+ is_null: false
+ values: 13
+ schema:
+ [pfs]:
+ type: string
+ path: cause.pfs
+ is_null: true
+ values: 10
+ different_values: 2
+ variants:
+ - "Standard" (x8)
+ - "Restricted" (x2)
+ 'search_markdown':
+ type: string
+ path: cause.search_markdown
+ is_null: false
+ values: 13
+ different_values: 13 (all different)
+ variants: [omitted]
+ 'source':
+ type: array
+ path: cause.source
+ is_null: false
+ values: 13
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: cause.source.[]
+ is_null: false
+ values: 13
+ different_values: 3
+ variants:
+ - "Player Core 2" (x7)
+ - "Core Rulebook" (x3)
+ - "Advanced Player's Guide" (x3)
+ 'source_category':
+ type: array
+ path: cause.source_category
+ is_null: false
+ values: 13
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: cause.source_category.[]
+ is_null: false
+ values: 13
+ different_values: 1 (all same)
+ variants: "Rulebooks" (x13)
+ 'source_markdown':
+ type: string
+ path: cause.source_markdown
+ is_null: false
+ values: 13
+ different_values: 6
+ variants:
+ - "[Advanced Player's Guide](/Sources.aspx?ID=39) pg. 116 2.0" (x3)
+ - "[Player Core 2](/Sources.aspx?ID=227) pg. 91 1.1" (x3)
+ - "[Core Rulebook](/Sources.aspx?ID=1) pg. 106 4.0" (x2)
+ - "[Player Core 2](/Sources.aspx?ID=227) pg. 92 1.1" (x2)
+ - "[Player Core 2](/Sources.aspx?ID=227) pg. 93 1.1" (x2)
+ - "[Core Rulebook](/Sources.aspx?ID=1) pg. 107 4.0" (x1)
+ 'speed':
+ type: object
+ path: cause.speed
+ is_null: false
+ values: 13
+ schema:
+ 'summary_markdown':
+ type: string
+ path: cause.summary_markdown
+ is_null: false
+ values: 13
+ different_values: 13 (all different)
+ variants:
+ - "You’re honorable, forthright, and committed to pushing back the forces of cruelty. You gain the Retributive Strike champion’s reaction and the lay …" (x1)
+ - "You’re full of kindness and forgiveness. You gain the Glimpse of Redemption champion’s reaction and the lay on hands devotion spell. After the …" (x1)
+ - "You’re committed to defending the freedom of others. You gain the Liberating Step champion’s reaction and the lay on hands devotion spell. After …" (x1)
+ - "Might makes right, and you subjugate the weak to keep them in their proper place. You gain the Iron Command champion's reaction and the touch of …" (x1)
+ - "You always take what pleases you, no matter who it hurts, and you spread the influence of evil across all you touch. You gain the Selfish Shield …" (x1)
+ - "You're dishonorable, dishonest, and committed to breaking the false hopes of kindness. You gain the Destructive Vengeance champion's reaction and the …" (x1)
+ - "You always take what pleases you, no matter who it hurts, and you spread a malign influence across all you touch." (x1)
+ - "The glowing grandeur of the immaculate celestial realms inspires you, and you exhort their virtues to bring humility to the denizens of other grim …" (x1)
+ - "You’re dishonorable, dishonest, and committed to breaking the false hopes of kindness." (x1)
+ - "In your deity’s name you seek justice, following the law and punishing those who transgress it." (x1)
+ - "You will see all people free from bondage and prohibitions." (x1)
+ - "Society is ordered with good reason, and people should conduct themselves as appropriate for their proper place." (x1)
+ - "Yearning for all to live in harmony, you make every attempt to redeem those others might slay or dismiss." (x1)
+ 'trait_markdown':
+ type: string
+ path: cause.trait_markdown
+ is_null: false
+ values: 13
+ different_values: 3
+ variants:
+ - "" (x9)
+ - "[Unholy](/Traits.aspx?ID=521)" (x2)
+ - "[Holy](/Traits.aspx?ID=517)" (x2)
+ 'type':
+ type: string
+ path: cause.type
+ is_null: false
+ values: 13
+ different_values: 1 (all same)
+ variants: "Champion Cause" (x13)
+ 'url':
+ type: string
+ path: cause.url
+ is_null: false
+ values: 13
+ different_values: 13 (all different)
+ variants:
+ - "/Causes.aspx?ID=1" (x1)
+ - "/Causes.aspx?ID=2" (x1)
+ - "/Causes.aspx?ID=3" (x1)
+ - "/Causes.aspx?ID=4" (x1)
+ - "/Causes.aspx?ID=5" (x1)
+ - "/Causes.aspx?ID=6" (x1)
+ - "/Causes.aspx?ID=8" (x1)
+ - "/Causes.aspx?ID=9" (x1)
+ - "/Causes.aspx?ID=10" (x1)
+ - "/Causes.aspx?ID=11" (x1)
+ - "/Causes.aspx?ID=12" (x1)
+ - "/Causes.aspx?ID=13" (x1)
+ - "/Causes.aspx?ID=14" (x1)
+ 'weakness':
+ type: object
+ path: cause.weakness
+ is_null: false
+ values: 13
+ schema:
+ [remaster_id]:
+ type: array
+ path: cause.remaster_id
+ is_null: true
+ values: 6
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: cause.remaster_id.[]
+ is_null: false
+ values: 6
+ different_values: 6
+ variants:
+ - "cause-11" (x1)
+ - "cause-14" (x1)
+ - "cause-12" (x1)
+ - "cause-13" (x1)
+ - "cause-8" (x1)
+ - "cause-10" (x1)
+ [trait]:
+ type: array
+ path: cause.trait
+ is_null: true
+ values: 4
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: cause.trait.[]
+ is_null: false
+ values: 4
+ different_values: 2
+ variants:
+ - "Unholy" (x2)
+ - "Holy" (x2)
diff --git a/output/aonprd/class-feature.yaml b/output/aonprd/class-feature.yaml
new file mode 100644
index 0000000..2113f41
--- /dev/null
+++ b/output/aonprd/class-feature.yaml
@@ -0,0 +1,236 @@
+name: class-feature
+values: 1084
+schema:
+ 'category':
+ type: string
+ path: class-feature.category
+ is_null: false
+ values: 1084
+ different_values: 1 (all same)
+ variants: "class-feature" (x1084)
+ 'id':
+ type: string
+ path: class-feature.id
+ is_null: false
+ values: 1084
+ different_values: 1084 (all different)
+ variants: [omitted]
+ 'search_markdown':
+ type: string
+ path: class-feature.search_markdown
+ is_null: false
+ values: 1084
+ different_values: 1084 (all different)
+ variants: [omitted]
+ 'source':
+ type: array
+ path: class-feature.source
+ is_null: false
+ values: 1084
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: class-feature.source.[]
+ is_null: false
+ values: 1084
+ different_values: 9
+ variants:
+ - "Core Rulebook" (x306)
+ - "Player Core 2" (x220)
+ - "Player Core" (x193)
+ - "Advanced Player's Guide" (x109)
+ - "Secrets of Magic" (x59)
+ - "Guns & Gears" (x59)
+ - "Dark Archive" (x59)
+ - "War of Immortals" (x51)
+ - "Rage of Elements" (x28)
+ 'source_category':
+ type: array
+ path: class-feature.source_category
+ is_null: false
+ values: 1084
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: class-feature.source_category.[]
+ is_null: false
+ values: 1084
+ different_values: 1 (all same)
+ variants: "Rulebooks" (x1084)
+ 'source_markdown':
+ type: string
+ path: class-feature.source_markdown
+ is_null: false
+ values: 1084
+ different_values: 41
+ variants: [omitted]
+ 'speed':
+ type: object
+ path: class-feature.speed
+ is_null: false
+ values: 1084
+ schema:
+ 'summary_markdown':
+ type: string
+ path: class-feature.summary_markdown
+ is_null: false
+ values: 1084
+ different_values: 640
+ variants: [omitted]
+ 'type':
+ type: string
+ path: class-feature.type
+ is_null: false
+ values: 1084
+ different_values: 1 (all same)
+ variants: "Class Feature" (x1084)
+ 'url':
+ type: string
+ path: class-feature.url
+ is_null: false
+ values: 1084
+ different_values: 41
+ variants: [omitted]
+ [legacy_id]:
+ type: array
+ path: class-feature.legacy_id
+ is_null: true
+ values: 413
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: class-feature.legacy_id.[]
+ is_null: false
+ values: 413
+ different_values: 16
+ variants:
+ - "class-15" (x32)
+ - "class-4" (x29)
+ - "class-13" (x29)
+ - "class-10" (x28)
+ - "class-9" (x27)
+ - "class-1" (x27)
+ - "class-2" (x27)
+ - "class-14" (x27)
+ - "class-8" (x26)
+ - "class-3" (x25)
+ - "class-6" (x25)
+ - "class-7" (x24)
+ - "class-16" (x23)
+ - "class-12" (x23)
+ - "class-11" (x23)
+ - "class-5" (x18)
+ 'level':
+ type: integer
+ path: class-feature.level
+ is_null: false
+ values: 1084
+ different_values: 11
+ variants:
+ - 1 (x272)
+ - 3 (x127)
+ - 5 (x107)
+ - 13 (x94)
+ - 11 (x80)
+ - 7 (x76)
+ - 9 (x74)
+ - 19 (x71)
+ - 15 (x70)
+ - 2 (x61)
+ - 17 (x52)
+ 'markdown':
+ type: string
+ path: class-feature.markdown
+ is_null: false
+ values: 1084
+ different_values: 1084 (all different)
+ variants: [omitted]
+ 'name':
+ type: string
+ path: class-feature.name
+ is_null: false
+ values: 1084
+ different_values: 381
+ variants: [omitted]
+ 'primary_source_category':
+ type: string
+ path: class-feature.primary_source_category
+ is_null: false
+ values: 1084
+ different_values: 1 (all same)
+ variants: "Rulebooks" (x1084)
+ 'rarity':
+ type: string
+ path: class-feature.rarity
+ is_null: false
+ values: 1084
+ different_values: 1 (all same)
+ variants: "common" (x1084)
+ 'rarity_id':
+ type: integer
+ path: class-feature.rarity_id
+ is_null: false
+ values: 1084
+ different_values: 1 (all same)
+ variants: 1 (x1084)
+ 'release_date':
+ type: string
+ path: class-feature.release_date
+ is_null: false
+ values: 1084
+ different_values: 9
+ variants:
+ - "2019-08-01" (x306)
+ - "2024-08-01" (x220)
+ - "2023-11-15" (x193)
+ - "2020-07-30" (x109)
+ - "2021-09-01" (x59)
+ - "2021-10-13" (x59)
+ - "2022-07-27" (x59)
+ - "2024-10-30" (x51)
+ - "2023-08-02" (x28)
+ [remaster_id]:
+ type: array
+ path: class-feature.remaster_id
+ is_null: true
+ values: 415
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: class-feature.remaster_id.[]
+ is_null: false
+ values: 415
+ different_values: 16
+ variants:
+ - "class-58" (x31)
+ - "class-63" (x31)
+ - "class-56" (x29)
+ - "class-59" (x29)
+ - "class-36" (x28)
+ - "class-37" (x28)
+ - "class-57" (x26)
+ - "class-60" (x26)
+ - "class-61" (x26)
+ - "class-32" (x25)
+ - "class-34" (x25)
+ - "class-35" (x24)
+ - "class-62" (x23)
+ - "class-39" (x23)
+ - "class-38" (x23)
+ - "class-33" (x18)
+ 'resistance':
+ type: object
+ path: class-feature.resistance
+ is_null: false
+ values: 1084
+ schema:
+ 'weakness':
+ type: object
+ path: class-feature.weakness
+ is_null: false
+ values: 1084
+ schema:
diff --git a/output/aonprd/class-kit.yaml b/output/aonprd/class-kit.yaml
new file mode 100644
index 0000000..4213e09
--- /dev/null
+++ b/output/aonprd/class-kit.yaml
@@ -0,0 +1,210 @@
+name: class-kit
+values: 32
+schema:
+ 'bulk':
+ type: float
+ path: class-kit.bulk
+ is_null: false
+ values: 32
+ different_values: 14
+ variants:
+ - 3.3 (x5)
+ - 3.7 (x4)
+ - 3.5 (x4)
+ - 4.4 (x4)
+ - 2.2 (x3)
+ - 3.2 (x2)
+ - 2.1 (x2)
+ - 4.1 (x2)
+ - 1.3 (x1)
+ - 1.6 (x1)
+ - 2.6 (x1)
+ - 1.2 (x1)
+ - 2.5 (x1)
+ - 1.7 (x1)
+ 'bulk_raw':
+ type: string
+ path: class-kit.bulk_raw
+ is_null: false
+ values: 32
+ different_values: 14
+ variants:
+ - "3 Bulk, 3 light" (x5)
+ - "3 Bulk, 7 light" (x4)
+ - "3 Bulk, 5 light" (x4)
+ - "4 Bulk, 4 light" (x4)
+ - "2 Bulk, 2 light" (x3)
+ - "3 Bulk, 2 light" (x2)
+ - "2 Bulk, 1 light" (x2)
+ - "4 Bulk, 1 light" (x2)
+ - "1 Bulk, 3 light" (x1)
+ - "1 Bulk, 6 light" (x1)
+ - "2 Bulk, 6 light" (x1)
+ - "1 Bulk, 2 light" (x1)
+ - "2 Bulk, 5 light" (x1)
+ - "1 Bulk, 7 light" (x1)
+ 'category':
+ type: string
+ path: class-kit.category
+ is_null: false
+ values: 32
+ different_values: 1 (all same)
+ variants: "class-kit" (x32)
+ 'id':
+ type: string
+ path: class-kit.id
+ is_null: false
+ values: 32
+ different_values: 32 (all different)
+ variants: [omitted]
+ 'markdown':
+ type: string
+ path: class-kit.markdown
+ is_null: false
+ values: 32
+ different_values: 32 (all different)
+ variants: [omitted]
+ 'name':
+ type: string
+ path: class-kit.name
+ is_null: false
+ values: 32
+ different_values: 16
+ variants:
+ - "Alchemist Kit" (x2)
+ - "Barbarian Kit" (x2)
+ - "Bard Kit" (x2)
+ - "Champion Kit" (x2)
+ - "Cleric Kit" (x2)
+ - "Druid Kit" (x2)
+ - "Fighter Kit" (x2)
+ - "Monk Kit" (x2)
+ - "Ranger Kit" (x2)
+ - "Rogue Kit" (x2)
+ - "Sorcerer Kit" (x2)
+ - "Wizard Kit" (x2)
+ - "Investigator Kit" (x2)
+ - "Oracle Kit" (x2)
+ - "Swashbuckler Kit" (x2)
+ - "Witch Kit" (x2)
+ 'price_raw':
+ type: string
+ path: class-kit.price_raw
+ is_null: false
+ values: 32
+ different_values: 21
+ variants: [omitted]
+ 'primary_source_category':
+ type: string
+ path: class-kit.primary_source_category
+ is_null: false
+ values: 32
+ different_values: 1 (all same)
+ variants: "Rulebooks" (x32)
+ 'rarity':
+ type: string
+ path: class-kit.rarity
+ is_null: false
+ values: 32
+ different_values: 1 (all same)
+ variants: "common" (x32)
+ 'rarity_id':
+ type: integer
+ path: class-kit.rarity_id
+ is_null: false
+ values: 32
+ different_values: 1 (all same)
+ variants: 1 (x32)
+ 'release_date':
+ type: string
+ path: class-kit.release_date
+ is_null: false
+ values: 32
+ different_values: 4
+ variants:
+ - "2019-08-01" (x12)
+ - "2023-11-15" (x8)
+ - "2024-08-01" (x8)
+ - "2020-07-30" (x4)
+ 'resistance':
+ type: object
+ path: class-kit.resistance
+ is_null: false
+ values: 32
+ schema:
+ 'search_markdown':
+ type: string
+ path: class-kit.search_markdown
+ is_null: false
+ values: 32
+ different_values: 4
+ variants: [omitted]
+ 'source':
+ type: array
+ path: class-kit.source
+ is_null: false
+ values: 32
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: class-kit.source.[]
+ is_null: false
+ values: 32
+ different_values: 4
+ variants:
+ - "Core Rulebook" (x12)
+ - "Player Core" (x8)
+ - "Player Core 2" (x8)
+ - "Advanced Player's Guide" (x4)
+ 'source_category':
+ type: array
+ path: class-kit.source_category
+ is_null: false
+ values: 32
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: class-kit.source_category.[]
+ is_null: false
+ values: 32
+ different_values: 1 (all same)
+ variants: "Rulebooks" (x32)
+ 'source_markdown':
+ type: string
+ path: class-kit.source_markdown
+ is_null: false
+ values: 32
+ different_values: 4
+ variants:
+ - "[Core Rulebook](/Sources.aspx?ID=1) pg. 289 4.0" (x12)
+ - "[Player Core](/Sources.aspx?ID=216) pg. 268 2.0" (x8)
+ - "[Player Core 2](/Sources.aspx?ID=227) pg. 227 1.1" (x8)
+ - "[Advanced Player's Guide](/Sources.aspx?ID=39) pg. 249 2.0" (x4)
+ 'speed':
+ type: object
+ path: class-kit.speed
+ is_null: false
+ values: 32
+ schema:
+ 'type':
+ type: string
+ path: class-kit.type
+ is_null: false
+ values: 32
+ different_values: 1 (all same)
+ variants: "Class Kit" (x32)
+ 'url':
+ type: string
+ path: class-kit.url
+ is_null: false
+ values: 32
+ different_values: 32 (all different)
+ variants: [omitted]
+ 'weakness':
+ type: object
+ path: class-kit.weakness
+ is_null: false
+ values: 32
+ schema:
diff --git a/output/aonprd/class-sample.yaml b/output/aonprd/class-sample.yaml
new file mode 100644
index 0000000..c10de25
--- /dev/null
+++ b/output/aonprd/class-sample.yaml
@@ -0,0 +1,156 @@
+name: class-sample
+values: 71
+schema:
+ 'category':
+ type: string
+ path: class-sample.category
+ is_null: false
+ values: 71
+ different_values: 1 (all same)
+ variants: "class-sample" (x71)
+ 'id':
+ type: string
+ path: class-sample.id
+ is_null: false
+ values: 71
+ different_values: 71 (all different)
+ variants: [omitted]
+ 'markdown':
+ type: string
+ path: class-sample.markdown
+ is_null: false
+ values: 71
+ different_values: 71 (all different)
+ variants: [omitted]
+ 'name':
+ type: string
+ path: class-sample.name
+ is_null: false
+ values: 71
+ different_values: 60
+ variants: [omitted]
+ 'primary_source_category':
+ type: string
+ path: class-sample.primary_source_category
+ is_null: false
+ values: 71
+ different_values: 1 (all same)
+ variants: "Rulebooks" (x71)
+ 'rarity':
+ type: string
+ path: class-sample.rarity
+ is_null: false
+ values: 71
+ different_values: 1 (all same)
+ variants: "common" (x71)
+ 'rarity_id':
+ type: integer
+ path: class-sample.rarity_id
+ is_null: false
+ values: 71
+ different_values: 1 (all same)
+ variants: 1 (x71)
+ 'release_date':
+ type: string
+ path: class-sample.release_date
+ is_null: false
+ values: 71
+ different_values: 8
+ variants:
+ - "2019-08-01" (x26)
+ - "2023-11-15" (x15)
+ - "2020-07-30" (x7)
+ - "2021-10-13" (x6)
+ - "2022-07-27" (x6)
+ - "2021-09-01" (x5)
+ - "2024-10-30" (x5)
+ - "2023-08-02" (x1)
+ 'resistance':
+ type: object
+ path: class-sample.resistance
+ is_null: false
+ values: 71
+ schema:
+ 'search_markdown':
+ type: string
+ path: class-sample.search_markdown
+ is_null: false
+ values: 71
+ different_values: 71 (all different)
+ variants: [omitted]
+ 'source':
+ type: array
+ path: class-sample.source
+ is_null: false
+ values: 71
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: class-sample.source.[]
+ is_null: false
+ values: 71
+ different_values: 8
+ variants:
+ - "Core Rulebook" (x26)
+ - "Player Core" (x15)
+ - "Advanced Player's Guide" (x7)
+ - "Guns & Gears" (x6)
+ - "Dark Archive" (x6)
+ - "Secrets of Magic" (x5)
+ - "War of Immortals" (x5)
+ - "Rage of Elements" (x1)
+ 'source_category':
+ type: array
+ path: class-sample.source_category
+ is_null: false
+ values: 71
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: class-sample.source_category.[]
+ is_null: false
+ values: 71
+ different_values: 1 (all same)
+ variants: "Rulebooks" (x71)
+ 'source_markdown':
+ type: string
+ path: class-sample.source_markdown
+ is_null: false
+ values: 71
+ different_values: 71 (all different)
+ variants: [omitted]
+ 'speed':
+ type: object
+ path: class-sample.speed
+ is_null: false
+ values: 71
+ schema:
+ 'summary_markdown':
+ type: string
+ path: class-sample.summary_markdown
+ is_null: false
+ values: 71
+ different_values: 62
+ variants: [omitted]
+ 'type':
+ type: string
+ path: class-sample.type
+ is_null: false
+ values: 71
+ different_values: 1 (all same)
+ variants: "Class Sample Build" (x71)
+ 'url':
+ type: string
+ path: class-sample.url
+ is_null: false
+ values: 71
+ different_values: 71 (all different)
+ variants: [omitted]
+ 'weakness':
+ type: object
+ path: class-sample.weakness
+ is_null: false
+ values: 71
+ schema:
diff --git a/output/aonprd/class.yaml b/output/aonprd/class.yaml
new file mode 100644
index 0000000..60a3c99
--- /dev/null
+++ b/output/aonprd/class.yaml
@@ -0,0 +1,445 @@
+name: class
+values: 41
+schema:
+ 'attack_proficiency':
+ type: array
+ path: class.attack_proficiency
+ is_null: false
+ values: 41
+ min_count: 2
+ max_count: 6
+ value_type:
+ type: string
+ path: class.attack_proficiency.[]
+ is_null: false
+ values: 110
+ different_values: 18
+ variants:
+ - "Trained in unarmed attacks" (x38)
+ - "Trained in simple weapons" (x36)
+ - "Trained in martial weapons" (x15)
+ - "Trained in alchemical bombs" (x2)
+ - "Expert in simple weapons" (x2)
+ - "Expert in martial weapons" (x2)
+ - "Trained in advanced weapons" (x2)
+ - "Expert in unarmed attacks" (x2)
+ - "Trained in simple and martial weapons" (x2)
+ - "Trained in the longsword , rapier , sap , shortbow , shortsword , and whip" (x1)
+ - "Trained in the favored weapon of your deity. If your deity’s favored weapon is uncommon, you also gain access to that weapon." (x1)
+ - "Trained in the rapier , sap , shortbow , and shortsword" (x1)
+ - "Trained in the club , crossbow , dagger , heavy crossbow , and staff" (x1)
+ - "Expert in simple firearms and crossbows" (x1)
+ - "Expert in martial firearms and crossbows" (x1)
+ - "Trained in advanced firearms and crossbows" (x1)
+ - "Trained in the favored weapon of your deity. If your deity's favored weapon is uncommon, you also gain access to that weapon." (x1)
+ - "Trained in unarmed attack" (x1)
+ 'attribute':
+ type: array
+ path: class.attribute
+ is_null: false
+ values: 41
+ min_count: 1
+ max_count: 2
+ value_type:
+ type: string
+ path: class.attribute.[]
+ is_null: false
+ values: 54
+ different_values: 8
+ variants:
+ - "Dexterity" (x15)
+ - "Strength" (x12)
+ - "Intelligence" (x10)
+ - "Charisma" (x9)
+ - "Wisdom" (x5)
+ - "Other" (x1)
+ - "Constitution" (x1)
+ - "other" (x1)
+ 'category':
+ type: string
+ path: class.category
+ is_null: false
+ values: 41
+ different_values: 1 (all same)
+ variants: "class" (x41)
+ 'defense_proficiency':
+ type: array
+ path: class.defense_proficiency
+ is_null: false
+ values: 41
+ min_count: 1
+ max_count: 3
+ value_type:
+ type: string
+ path: class.defense_proficiency.[]
+ is_null: false
+ values: 95
+ different_values: 7
+ variants:
+ - "Trained in unarmored defense" (x39)
+ - "Trained in light armor" (x25)
+ - "Trained in medium armor" (x14)
+ - "Untrained in all armor" (x9)
+ - "Trained in all armor" (x4)
+ - "Untrained in all armor, though your doctrine might alter this" (x2)
+ - "Expert in unarmored defense" (x2)
+ 'fortitude_proficiency':
+ type: string
+ path: class.fortitude_proficiency
+ is_null: false
+ values: 41
+ different_values: 2
+ variants:
+ - "Trained" (x22)
+ - "Expert" (x19)
+ 'hp_raw':
+ type: string
+ path: class.hp_raw
+ is_null: false
+ values: 41
+ different_values: 4
+ variants:
+ - "8" (x20)
+ - "10" (x12)
+ - "6" (x7)
+ - "12" (x2)
+ 'icon_image':
+ type: string
+ path: class.icon_image
+ is_null: false
+ values: 41
+ different_values: 25
+ variants: [omitted]
+ 'id':
+ type: string
+ path: class.id
+ is_null: false
+ values: 41
+ different_values: 41 (all different)
+ variants: [omitted]
+ 'image':
+ type: array
+ path: class.image
+ is_null: false
+ values: 41
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: class.image.[]
+ is_null: false
+ values: 41
+ different_values: 25
+ variants: [omitted]
+ 'skill_proficiency':
+ type: array
+ path: class.skill_proficiency
+ is_null: false
+ values: 41
+ min_count: 1
+ max_count: 3
+ value_type:
+ type: string
+ path: class.skill_proficiency.[]
+ is_null: false
+ values: 98
+ different_values: 30
+ variants: [omitted]
+ 'source':
+ type: array
+ path: class.source
+ is_null: false
+ values: 41
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: class.source.[]
+ is_null: false
+ values: 41
+ different_values: 9
+ variants:
+ - "Core Rulebook" (x12)
+ - "Player Core" (x8)
+ - "Player Core 2" (x8)
+ - "Advanced Player's Guide" (x4)
+ - "Secrets of Magic" (x2)
+ - "Guns & Gears" (x2)
+ - "Dark Archive" (x2)
+ - "War of Immortals" (x2)
+ - "Rage of Elements" (x1)
+ 'source_category':
+ type: array
+ path: class.source_category
+ is_null: false
+ values: 41
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: class.source_category.[]
+ is_null: false
+ values: 41
+ different_values: 1 (all same)
+ variants: "Rulebooks" (x41)
+ 'source_markdown':
+ type: string
+ path: class.source_markdown
+ is_null: false
+ values: 41
+ different_values: 41 (all different)
+ variants: [omitted]
+ 'speed':
+ type: object
+ path: class.speed
+ is_null: false
+ values: 41
+ schema:
+ 'summary_markdown':
+ type: string
+ path: class.summary_markdown
+ is_null: false
+ values: 41
+ different_values: 35
+ variants: [omitted]
+ 'tradition_markdown':
+ type: string
+ path: class.tradition_markdown
+ is_null: false
+ values: 41
+ different_values: 6
+ variants:
+ - "" (x24)
+ - "[Arcane](/SpellLists.aspx?Tradition=1), [Divine](/SpellLists.aspx?Tradition=2), [Occult](/SpellLists.aspx?Tradition=3), [Primal](/SpellLists.aspx?Tradition=4)" (x5)
+ - "[Divine](/SpellLists.aspx?Tradition=2)" (x4)
+ - "[Occult](/SpellLists.aspx?Tradition=3)" (x3)
+ - "[Arcane](/SpellLists.aspx?Tradition=1)" (x3)
+ - "[Primal](/SpellLists.aspx?Tradition=4)" (x2)
+ 'trait_markdown':
+ type: string
+ path: class.trait_markdown
+ is_null: false
+ values: 41
+ different_values: 3
+ variants:
+ - "" (x38)
+ - "[Uncommon](/Traits.aspx?ID=159)" (x2)
+ - "[Rare](/Traits.aspx?ID=683)" (x1)
+ 'type':
+ type: string
+ path: class.type
+ is_null: false
+ values: 41
+ different_values: 1 (all same)
+ variants: "Class" (x41)
+ 'url':
+ type: string
+ path: class.url
+ is_null: false
+ values: 41
+ different_values: 41 (all different)
+ variants: [omitted]
+ 'weakness':
+ type: object
+ path: class.weakness
+ is_null: false
+ values: 41
+ schema:
+ 'will_proficiency':
+ type: string
+ path: class.will_proficiency
+ is_null: false
+ values: 41
+ different_values: 2
+ variants:
+ - "Expert" (x33)
+ - "Trained" (x8)
+ [legacy_id]:
+ type: array
+ path: class.legacy_id
+ is_null: true
+ values: 16
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: class.legacy_id.[]
+ is_null: false
+ values: 16
+ different_values: 16
+ variants:
+ - "class-3" (x1)
+ - "class-5" (x1)
+ - "class-6" (x1)
+ - "class-7" (x1)
+ - "class-9" (x1)
+ - "class-10" (x1)
+ - "class-16" (x1)
+ - "class-12" (x1)
+ - "class-1" (x1)
+ - "class-2" (x1)
+ - "class-4" (x1)
+ - "class-13" (x1)
+ - "class-8" (x1)
+ - "class-14" (x1)
+ - "class-11" (x1)
+ - "class-15" (x1)
+ 'markdown':
+ type: string
+ path: class.markdown
+ is_null: false
+ values: 41
+ different_values: 41 (all different)
+ variants: [omitted]
+ 'name':
+ type: string
+ path: class.name
+ is_null: false
+ values: 41
+ different_values: 25
+ variants: [omitted]
+ 'perception_proficiency':
+ type: string
+ path: class.perception_proficiency
+ is_null: false
+ values: 41
+ different_values: 2
+ variants:
+ - "Trained" (x25)
+ - "Expert" (x16)
+ 'pfs':
+ type: string
+ path: class.pfs
+ is_null: false
+ values: 41
+ different_values: 1 (all same)
+ variants: "Standard" (x41)
+ 'primary_source_category':
+ type: string
+ path: class.primary_source_category
+ is_null: false
+ values: 41
+ different_values: 1 (all same)
+ variants: "Rulebooks" (x41)
+ 'rarity':
+ type: string
+ path: class.rarity
+ is_null: false
+ values: 41
+ different_values: 3
+ variants:
+ - "common" (x38)
+ - "uncommon" (x2)
+ - "rare" (x1)
+ 'rarity_id':
+ type: integer
+ path: class.rarity_id
+ is_null: false
+ values: 41
+ different_values: 3
+ variants:
+ - 1 (x38)
+ - 2 (x2)
+ - 3 (x1)
+ 'reflex_proficiency':
+ type: string
+ path: class.reflex_proficiency
+ is_null: false
+ values: 41
+ different_values: 2
+ variants:
+ - "Trained" (x25)
+ - "Expert" (x16)
+ 'release_date':
+ type: string
+ path: class.release_date
+ is_null: false
+ values: 41
+ different_values: 9
+ variants:
+ - "2019-08-01" (x12)
+ - "2023-11-15" (x8)
+ - "2024-08-01" (x8)
+ - "2020-07-30" (x4)
+ - "2021-09-01" (x2)
+ - "2021-10-13" (x2)
+ - "2022-07-27" (x2)
+ - "2024-10-30" (x2)
+ - "2023-08-02" (x1)
+ 'resistance':
+ type: object
+ path: class.resistance
+ is_null: false
+ values: 41
+ schema:
+ [remaster_id]:
+ type: array
+ path: class.remaster_id
+ is_null: true
+ values: 16
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: class.remaster_id.[]
+ is_null: false
+ values: 16
+ different_values: 16
+ variants:
+ - "class-56" (x1)
+ - "class-57" (x1)
+ - "class-32" (x1)
+ - "class-58" (x1)
+ - "class-33" (x1)
+ - "class-34" (x1)
+ - "class-35" (x1)
+ - "class-60" (x1)
+ - "class-36" (x1)
+ - "class-37" (x1)
+ - "class-62" (x1)
+ - "class-39" (x1)
+ - "class-59" (x1)
+ - "class-61" (x1)
+ - "class-63" (x1)
+ - "class-38" (x1)
+ 'search_markdown':
+ type: string
+ path: class.search_markdown
+ is_null: false
+ values: 41
+ different_values: 41 (all different)
+ variants: [omitted]
+ [tradition]:
+ type: array
+ path: class.tradition
+ is_null: true
+ values: 17
+ min_count: 1
+ max_count: 4
+ value_type:
+ type: string
+ path: class.tradition.[]
+ is_null: false
+ values: 32
+ different_values: 4
+ variants:
+ - "Divine" (x9)
+ - "Occult" (x8)
+ - "Arcane" (x8)
+ - "Primal" (x7)
+ [trait]:
+ type: array
+ path: class.trait
+ is_null: true
+ values: 3
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: class.trait.[]
+ is_null: false
+ values: 3
+ different_values: 2
+ variants:
+ - "Uncommon" (x2)
+ - "Rare" (x1)
diff --git a/output/aonprd/condition.yaml b/output/aonprd/condition.yaml
new file mode 100644
index 0000000..a8df78c
--- /dev/null
+++ b/output/aonprd/condition.yaml
@@ -0,0 +1,213 @@
+name: condition
+values: 98
+schema:
+ 'category':
+ type: string
+ path: condition.category
+ is_null: false
+ values: 98
+ different_values: 1 (all same)
+ variants: "condition" (x98)
+ 'id':
+ type: string
+ path: condition.id
+ is_null: false
+ values: 98
+ different_values: 98 (all different)
+ variants: [omitted]
+ 'legacy_id':
+ type: array
+ path: condition.legacy_id
+ is_null: false
+ values: 42
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: condition.legacy_id.[]
+ is_null: false
+ values: 42
+ different_values: 42
+ variants: [omitted]
+ 'markdown':
+ type: string
+ path: condition.markdown
+ is_null: false
+ values: 98
+ different_values: 98 (all different)
+ variants: [omitted]
+ 'name':
+ type: string
+ path: condition.name
+ is_null: false
+ values: 98
+ different_values: 57
+ variants: [omitted]
+ 'primary_source_category':
+ type: string
+ path: condition.primary_source_category
+ is_null: false
+ values: 98
+ different_values: 2
+ variants:
+ - "Rulebooks" (x84)
+ - "Adventure Paths" (x14)
+ 'rarity':
+ type: string
+ path: condition.rarity
+ is_null: false
+ values: 98
+ different_values: 1 (all same)
+ variants: "common" (x98)
+ 'rarity_id':
+ type: integer
+ path: condition.rarity_id
+ is_null: false
+ values: 98
+ different_values: 1 (all same)
+ variants: 1 (x98)
+ 'release_date':
+ type: string
+ path: condition.release_date
+ is_null: false
+ values: 98
+ different_values: 3
+ variants:
+ - "2019-08-01" (x42)
+ - "2023-11-15" (x42)
+ - "2022-10-26" (x14)
+ [primary_source_group]:
+ type: string
+ path: condition.primary_source_group
+ is_null: true
+ values: 14
+ different_values: 1 (all same)
+ variants: "Kingmaker" (x14)
+ 'resistance':
+ type: object
+ path: condition.resistance
+ is_null: false
+ values: 98
+ schema:
+ 'search_markdown':
+ type: string
+ path: condition.search_markdown
+ is_null: false
+ values: 98
+ different_values: 93
+ variants: [omitted]
+ [source_group]:
+ type: array
+ path: condition.source_group
+ is_null: true
+ values: 14
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: condition.source_group.[]
+ is_null: false
+ values: 14
+ different_values: 1 (all same)
+ variants: "Kingmaker" (x14)
+ 'source_markdown':
+ type: string
+ path: condition.source_markdown
+ is_null: false
+ values: 98
+ different_values: 14
+ variants:
+ - "[Core Rulebook](/Sources.aspx?ID=1) pg. 620 4.0" (x12)
+ - "[Player Core](/Sources.aspx?ID=216) pg. 444 2.0" (x12)
+ - "[Kingmaker Adventure Path](/Sources.aspx?ID=150) pg. 583" (x9)
+ - "[Core Rulebook](/Sources.aspx?ID=1) pg. 619 4.0" (x8)
+ - "[Core Rulebook](/Sources.aspx?ID=1) pg. 622 4.0" (x7)
+ - "[Player Core](/Sources.aspx?ID=216) pg. 442 2.0" (x7)
+ - "[Player Core](/Sources.aspx?ID=216) pg. 443 2.0" (x7)
+ - "[Player Core](/Sources.aspx?ID=216) pg. 446 2.0" (x7)
+ - "[Core Rulebook](/Sources.aspx?ID=1) pg. 618 4.0" (x6)
+ - "[Core Rulebook](/Sources.aspx?ID=1) pg. 621 4.0" (x5)
+ - "[Kingmaker Adventure Path](/Sources.aspx?ID=150) pg. 582" (x5)
+ - "[Player Core](/Sources.aspx?ID=216) pg. 445 2.0" (x5)
+ - "[Core Rulebook](/Sources.aspx?ID=1) pg. 623 4.0" (x4)
+ - "[Player Core](/Sources.aspx?ID=216) pg. 447 2.0" (x4)
+ 'speed':
+ type: object
+ path: condition.speed
+ is_null: false
+ values: 98
+ schema:
+ 'summary_markdown':
+ type: string
+ path: condition.summary_markdown
+ is_null: false
+ values: 98
+ different_values: 81
+ variants: [omitted]
+ 'type':
+ type: string
+ path: condition.type
+ is_null: false
+ values: 98
+ different_values: 1 (all same)
+ variants: "Condition" (x98)
+ 'url':
+ type: string
+ path: condition.url
+ is_null: false
+ values: 98
+ different_values: 98 (all different)
+ variants: [omitted]
+ 'weakness':
+ type: object
+ path: condition.weakness
+ is_null: false
+ values: 98
+ schema:
+ [remaster_id]:
+ type: array
+ path: condition.remaster_id
+ is_null: true
+ values: 42
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: condition.remaster_id.[]
+ is_null: false
+ values: 42
+ different_values: 42
+ variants: [omitted]
+ 'source':
+ type: array
+ path: condition.source
+ is_null: false
+ values: 98
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: condition.source.[]
+ is_null: false
+ values: 98
+ different_values: 3
+ variants:
+ - "Core Rulebook" (x42)
+ - "Player Core" (x42)
+ - "Kingmaker Adventure Path" (x14)
+ 'source_category':
+ type: array
+ path: condition.source_category
+ is_null: false
+ values: 98
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: condition.source_category.[]
+ is_null: false
+ values: 98
+ different_values: 2
+ variants:
+ - "Rulebooks" (x84)
+ - "Adventure Paths" (x14)
diff --git a/output/aonprd/conscious-mind.yaml b/output/aonprd/conscious-mind.yaml
new file mode 100644
index 0000000..89b12a6
--- /dev/null
+++ b/output/aonprd/conscious-mind.yaml
@@ -0,0 +1,190 @@
+name: conscious-mind
+values: 6
+schema:
+ 'category':
+ type: string
+ path: conscious-mind.category
+ is_null: false
+ values: 6
+ different_values: 1 (all same)
+ variants: "conscious-mind" (x6)
+ 'id':
+ type: string
+ path: conscious-mind.id
+ is_null: false
+ values: 6
+ different_values: 6 (all different)
+ variants:
+ - "conscious-mind-1" (x1)
+ - "conscious-mind-2" (x1)
+ - "conscious-mind-3" (x1)
+ - "conscious-mind-4" (x1)
+ - "conscious-mind-5" (x1)
+ - "conscious-mind-6" (x1)
+ 'markdown':
+ type: string
+ path: conscious-mind.markdown
+ is_null: false
+ values: 6
+ different_values: 6 (all different)
+ variants: [omitted]
+ 'name':
+ type: string
+ path: conscious-mind.name
+ is_null: false
+ values: 6
+ different_values: 6 (all different)
+ variants:
+ - "The Distant Grasp" (x1)
+ - "The Infinite Eye" (x1)
+ - "The Oscillating Wave" (x1)
+ - "The Silent Whisper" (x1)
+ - "The Tangible Dream" (x1)
+ - "The Unbound Step" (x1)
+ 'pfs':
+ type: string
+ path: conscious-mind.pfs
+ is_null: false
+ values: 6
+ different_values: 1 (all same)
+ variants: "Standard" (x6)
+ 'primary_source_category':
+ type: string
+ path: conscious-mind.primary_source_category
+ is_null: false
+ values: 6
+ different_values: 1 (all same)
+ variants: "Rulebooks" (x6)
+ 'rarity':
+ type: string
+ path: conscious-mind.rarity
+ is_null: false
+ values: 6
+ different_values: 1 (all same)
+ variants: "common" (x6)
+ 'rarity_id':
+ type: integer
+ path: conscious-mind.rarity_id
+ is_null: false
+ values: 6
+ different_values: 1 (all same)
+ variants: 1 (x6)
+ 'release_date':
+ type: string
+ path: conscious-mind.release_date
+ is_null: false
+ values: 6
+ different_values: 1 (all same)
+ variants: "2022-07-27" (x6)
+ 'resistance':
+ type: object
+ path: conscious-mind.resistance
+ is_null: false
+ values: 6
+ schema:
+ 'search_markdown':
+ type: string
+ path: conscious-mind.search_markdown
+ is_null: false
+ values: 6
+ different_values: 6 (all different)
+ variants: [omitted]
+ 'source':
+ type: array
+ path: conscious-mind.source
+ is_null: false
+ values: 6
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: conscious-mind.source.[]
+ is_null: false
+ values: 6
+ different_values: 1 (all same)
+ variants: "Dark Archive" (x6)
+ 'source_category':
+ type: array
+ path: conscious-mind.source_category
+ is_null: false
+ values: 6
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: conscious-mind.source_category.[]
+ is_null: false
+ values: 6
+ different_values: 1 (all same)
+ variants: "Rulebooks" (x6)
+ 'source_markdown':
+ type: string
+ path: conscious-mind.source_markdown
+ is_null: false
+ values: 6
+ different_values: 6 (all different)
+ variants:
+ - "[Dark Archive](/Sources.aspx?ID=129) pg. 16" (x1)
+ - "[Dark Archive](/Sources.aspx?ID=129) pg. 18" (x1)
+ - "[Dark Archive](/Sources.aspx?ID=129) pg. 19" (x1)
+ - "[Dark Archive](/Sources.aspx?ID=129) pg. 20" (x1)
+ - "[Dark Archive](/Sources.aspx?ID=129) pg. 21" (x1)
+ - "[Dark Archive](/Sources.aspx?ID=129) pg. 23" (x1)
+ 'speed':
+ type: object
+ path: conscious-mind.speed
+ is_null: false
+ values: 6
+ schema:
+ 'spell_markdown':
+ type: string
+ path: conscious-mind.spell_markdown
+ is_null: false
+ values: 6
+ different_values: 6 (all different)
+ variants:
+ - "[Dancing Blade](/Spells.aspx?ID=1132), [Falling Sky](/Spells.aspx?ID=1153), [Fly](/Spells.aspx?ID=125), [Implosion](/Spells.aspx?ID=162), [Kinetic Ram](/Spells.aspx?ID=1156), [Levitate](/Spells.aspx?ID=170), [Mage Hand](/Spells.aspx?ID=177), [Poltergeist's Fury](/Spells.aspx?ID=1160), [Telekinetic Bombardment](/Spells.aspx?ID=1165), [Telekinetic Haul](/Spells.aspx?ID=332), [Telekinetic Maneuver](/Spells.aspx?ID=333), [Telekinetic Projectile](/Spells.aspx?ID=334), [Telekinetic Rend](/Spells.aspx?ID=1130), [Vector Screen](/Spells.aspx?ID=1131)" (x1)
+ - "[Augury](/Spells.aspx?ID=15), [Clairvoyance](/Spells.aspx?ID=40), [Detect Magic](/Spells.aspx?ID=66), [Foresee the Path](/Spells.aspx?ID=1135), [Foresight](/Spells.aspx?ID=127), [Glimpse Weakness](/Spells.aspx?ID=1133), [Guidance](/Spells.aspx?ID=142), [Omnidirectional Scan](/Spells.aspx?ID=1134), [Organsight](/Spells.aspx?ID=963), [Prying Eye](/Spells.aspx?ID=239), [True Seeing](/Spells.aspx?ID=344), [True Strike](/Spells.aspx?ID=345), [True Target](/Spells.aspx?ID=346), [Unrelenting Observation](/Spells.aspx?ID=351)" (x1)
+ - "[Burning Hands](/Spells.aspx?ID=30), [Cone of Cold](/Spells.aspx?ID=47), [Entropic Wheel](/Spells.aspx?ID=1137), [Fiery Body](/Spells.aspx?ID=115), [Fire Shield](/Spells.aspx?ID=118), [Fireball](/Spells.aspx?ID=119), [Flame Vortex](/Spells.aspx?ID=911), [Frostbite](/Spells.aspx?ID=1539), [Heat Metal](/Spells.aspx?ID=694), [Ignition](/Spells.aspx?ID=1565), [Meteor Swarm](/Spells.aspx?ID=191), [Polar Ray](/Spells.aspx?ID=224), [Redistribute Potential](/Spells.aspx?ID=1138), [Thermal Stasis](/Spells.aspx?ID=1136)" (x1)
+ - "[Contagious Idea](/Spells.aspx?ID=1141), [Daze](/Spells.aspx?ID=61), [Forbidden Thought](/Spells.aspx?ID=1139), [Heroism](/Spells.aspx?ID=149), [Message](/Spells.aspx?ID=190), [Mindlink](/Spells.aspx?ID=195), [Sending](/Spells.aspx?ID=272), [Shatter Mind](/Spells.aspx?ID=1140), [Synaptic Pulse](/Spells.aspx?ID=327), [Telepathic Demand](/Spells.aspx?ID=336), [Telepathy](/Spells.aspx?ID=337), [Touch of Idiocy](/Spells.aspx?ID=341), [Uncontrollable Dance](/Spells.aspx?ID=347), [Visions of Danger](/Spells.aspx?ID=358)" (x1)
+ - "[Astral Rain](/Spells.aspx?ID=1143), [Blade Barrier](/Spells.aspx?ID=24), [Color Spray](/Spells.aspx?ID=44), [Etheric Shards](/Spells.aspx?ID=1152), [Figment](/Spells.aspx?ID=1528), [Hologram Cage](/Spells.aspx?ID=1144), [Imaginary Weapon](/Spells.aspx?ID=1142), [Mirror Image](/Spells.aspx?ID=197), [Prismatic Sphere](/Spells.aspx?ID=232), [Project Image](/Spells.aspx?ID=237), [Resilient Sphere](/Spells.aspx?ID=255), [Scintillating Pattern](/Spells.aspx?ID=267), [Sea of Thought](/Spells.aspx?ID=1162), [Shield](/Spells.aspx?ID=280)" (x1)
+ - "[Bilocation](/Spells.aspx?ID=1149), [Collective Transposition](/Spells.aspx?ID=43), [Dimension Door](/Spells.aspx?ID=69), [Distortion Lens](/Spells.aspx?ID=1145), [Enlarge](/Spells.aspx?ID=102), [Ghostly Shift](/Spells.aspx?ID=1146), [Maze](/Spells.aspx?ID=187), [Momentary Recovery](/Spells.aspx?ID=1157), [Phase Bolt](/Spells.aspx?ID=1159), [Rally Point](/Spells.aspx?ID=1161), [Strange Geometry](/Spells.aspx?ID=719), [Tesseract Tunnel](/Spells.aspx?ID=1147), [Thoughtful Gift](/Spells.aspx?ID=722), [Warp Step](/Spells.aspx?ID=1166)" (x1)
+ 'summary_markdown':
+ type: string
+ path: conscious-mind.summary_markdown
+ is_null: false
+ values: 6
+ different_values: 6 (all different)
+ variants:
+ - "Motion characterizes the physical—a boulder falls, creatures move, the world turns. You believe the truest form of mind over matter is therefore to …" (x1)
+ - "The true strength of the mind lies in the knowledge it contains, with each new observation contributing to the totality of its experiences. To grow …" (x1)
+ - "At the heart of all things is energy. Though it may change its form or resting place, it is eternal, fundamental, the purest of building blocks. Your …" (x1)
+ - "Every mind murmurs constantly, and the static from those nearby reverberates in your head like wind through leaves. What better focus for your magic …" (x1)
+ - "You pull colors and shapes from the depth of your mind, projecting impossible creations into the world as tapestries of astral thread or sculptures …" (x1)
+ - "The mind can flit from thought to thought; why too shouldn't you? You focus on motion in a higher order of spatial dimensions, not just the typical …" (x1)
+ 'type':
+ type: string
+ path: conscious-mind.type
+ is_null: false
+ values: 6
+ different_values: 1 (all same)
+ variants: "Psychic Conscious Mind" (x6)
+ 'url':
+ type: string
+ path: conscious-mind.url
+ is_null: false
+ values: 6
+ different_values: 6 (all different)
+ variants:
+ - "/ConsciousMinds.aspx?ID=1" (x1)
+ - "/ConsciousMinds.aspx?ID=2" (x1)
+ - "/ConsciousMinds.aspx?ID=3" (x1)
+ - "/ConsciousMinds.aspx?ID=4" (x1)
+ - "/ConsciousMinds.aspx?ID=5" (x1)
+ - "/ConsciousMinds.aspx?ID=6" (x1)
+ 'weakness':
+ type: object
+ path: conscious-mind.weakness
+ is_null: false
+ values: 6
+ schema:
diff --git a/output/aonprd/creature-ability.yaml b/output/aonprd/creature-ability.yaml
new file mode 100644
index 0000000..d011459
--- /dev/null
+++ b/output/aonprd/creature-ability.yaml
@@ -0,0 +1,204 @@
+name: creature-ability
+values: 85
+schema:
+ 'category':
+ type: string
+ path: creature-ability.category
+ is_null: false
+ values: 85
+ different_values: 1 (all same)
+ variants: "creature-ability" (x85)
+ 'id':
+ type: string
+ path: creature-ability.id
+ is_null: false
+ values: 85
+ different_values: 85 (all different)
+ variants: [omitted]
+ 'source':
+ type: array
+ path: creature-ability.source
+ is_null: false
+ values: 85
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: creature-ability.source.[]
+ is_null: false
+ values: 85
+ different_values: 6
+ variants:
+ - "Bestiary" (x41)
+ - "Monster Core" (x35)
+ - "Rage of Elements" (x4)
+ - "Bestiary 3" (x2)
+ - "NPC Core" (x2)
+ - "Bestiary 2" (x1)
+ 'source_category':
+ type: array
+ path: creature-ability.source_category
+ is_null: false
+ values: 85
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: creature-ability.source_category.[]
+ is_null: false
+ values: 85
+ different_values: 1 (all same)
+ variants: "Rulebooks" (x85)
+ 'source_markdown':
+ type: string
+ path: creature-ability.source_markdown
+ is_null: false
+ values: 85
+ different_values: 12
+ variants:
+ - "[Bestiary](/Sources.aspx?ID=2) pg. 343" (x18)
+ - "[Monster Core](/Sources.aspx?ID=221) pg. 359 1.1" (x13)
+ - "[Monster Core](/Sources.aspx?ID=221) pg. 360 1.1" (x13)
+ - "[Bestiary](/Sources.aspx?ID=2) pg. 344" (x12)
+ - "[Bestiary](/Sources.aspx?ID=2) pg. 342" (x11)
+ - "[Monster Core](/Sources.aspx?ID=221) pg. 358 1.1" (x9)
+ - "[Rage of Elements](/Sources.aspx?ID=205) pg. 233 2.0" (x3)
+ - "[NPC Core](/Sources.aspx?ID=236) pg. 231" (x2)
+ - "[Bestiary 2](/Sources.aspx?ID=32) pg. 305 2.0" (x1)
+ - "[Bestiary 3](/Sources.aspx?ID=66) pg. 304" (x1)
+ - "[Bestiary 3](/Sources.aspx?ID=66) pg. 306" (x1)
+ - "[Rage of Elements](/Sources.aspx?ID=205) pg. 232 2.0" (x1)
+ 'speed':
+ type: object
+ path: creature-ability.speed
+ is_null: false
+ values: 85
+ schema:
+ 'summary_markdown':
+ type: string
+ path: creature-ability.summary_markdown
+ is_null: false
+ values: 85
+ different_values: 74
+ variants: [omitted]
+ 'type':
+ type: string
+ path: creature-ability.type
+ is_null: false
+ values: 85
+ different_values: 1 (all same)
+ variants: "Creature Ability" (x85)
+ 'url':
+ type: string
+ path: creature-ability.url
+ is_null: false
+ values: 85
+ different_values: 85 (all different)
+ variants: [omitted]
+ 'weakness':
+ type: object
+ path: creature-ability.weakness
+ is_null: false
+ values: 85
+ schema:
+ [actions]:
+ type: string
+ path: creature-ability.actions
+ is_null: true
+ values: 39
+ different_values: 5
+ variants:
+ - "Single Action" (x21)
+ - "Reaction" (x10)
+ - "Free Action" (x4)
+ - "Two Actions" (x2)
+ - "Three Actions" (x2)
+ [legacy_id]:
+ type: array
+ path: creature-ability.legacy_id
+ is_null: true
+ values: 38
+ min_count: 1
+ max_count: 3
+ value_type:
+ type: string
+ path: creature-ability.legacy_id.[]
+ is_null: false
+ values: 40
+ different_values: 40
+ variants: [omitted]
+ 'markdown':
+ type: string
+ path: creature-ability.markdown
+ is_null: false
+ values: 85
+ different_values: 85 (all different)
+ variants: [omitted]
+ 'name':
+ type: string
+ path: creature-ability.name
+ is_null: false
+ values: 85
+ different_values: 50
+ variants: [omitted]
+ 'primary_source_category':
+ type: string
+ path: creature-ability.primary_source_category
+ is_null: false
+ values: 85
+ different_values: 1 (all same)
+ variants: "Rulebooks" (x85)
+ 'rarity':
+ type: string
+ path: creature-ability.rarity
+ is_null: false
+ values: 85
+ different_values: 1 (all same)
+ variants: "common" (x85)
+ 'rarity_id':
+ type: integer
+ path: creature-ability.rarity_id
+ is_null: false
+ values: 85
+ different_values: 1 (all same)
+ variants: 1 (x85)
+ 'release_date':
+ type: string
+ path: creature-ability.release_date
+ is_null: false
+ values: 85
+ different_values: 6
+ variants:
+ - "2019-08-01" (x41)
+ - "2024-03-27" (x35)
+ - "2023-08-02" (x4)
+ - "2021-04-07" (x2)
+ - "2025-02-26" (x2)
+ - "2020-05-27" (x1)
+ [remaster_id]:
+ type: array
+ path: creature-ability.remaster_id
+ is_null: true
+ values: 40
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: creature-ability.remaster_id.[]
+ is_null: false
+ values: 40
+ different_values: 38
+ variants: [omitted]
+ 'resistance':
+ type: object
+ path: creature-ability.resistance
+ is_null: false
+ values: 85
+ schema:
+ 'search_markdown':
+ type: string
+ path: creature-ability.search_markdown
+ is_null: false
+ values: 85
+ different_values: 85 (all different)
+ variants: [omitted]
diff --git a/output/aonprd/creature-adjustment.yaml b/output/aonprd/creature-adjustment.yaml
new file mode 100644
index 0000000..bb8cdbc
--- /dev/null
+++ b/output/aonprd/creature-adjustment.yaml
@@ -0,0 +1,188 @@
+name: creature-adjustment
+values: 55
+schema:
+ 'category':
+ type: string
+ path: creature-adjustment.category
+ is_null: false
+ values: 55
+ different_values: 1 (all same)
+ variants: "creature-adjustment" (x55)
+ 'id':
+ type: string
+ path: creature-adjustment.id
+ is_null: false
+ values: 55
+ different_values: 55 (all different)
+ variants: [omitted]
+ 'search_markdown':
+ type: string
+ path: creature-adjustment.search_markdown
+ is_null: false
+ values: 55
+ different_values: 55 (all different)
+ variants: [omitted]
+ 'source':
+ type: array
+ path: creature-adjustment.source
+ is_null: false
+ values: 55
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: creature-adjustment.source.[]
+ is_null: false
+ values: 55
+ different_values: 8
+ variants:
+ - "NPC Core" (x21)
+ - "Book of the Dead" (x9)
+ - "Howl of the Wild" (x7)
+ - "Rage of Elements" (x6)
+ - "Dark Archive" (x4)
+ - "War of Immortals" (x4)
+ - "Bestiary" (x2)
+ - "Monster Core" (x2)
+ 'source_category':
+ type: array
+ path: creature-adjustment.source_category
+ is_null: false
+ values: 55
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: creature-adjustment.source_category.[]
+ is_null: false
+ values: 55
+ different_values: 1 (all same)
+ variants: "Rulebooks" (x55)
+ 'source_markdown':
+ type: string
+ path: creature-adjustment.source_markdown
+ is_null: false
+ values: 55
+ different_values: 27
+ variants: [omitted]
+ 'speed':
+ type: object
+ path: creature-adjustment.speed
+ is_null: false
+ values: 55
+ schema:
+ 'summary_markdown':
+ type: string
+ path: creature-adjustment.summary_markdown
+ is_null: false
+ values: 55
+ different_values: 55 (all different)
+ variants: [omitted]
+ 'type':
+ type: string
+ path: creature-adjustment.type
+ is_null: false
+ values: 55
+ different_values: 1 (all same)
+ variants: "Creature Adjustment" (x55)
+ 'url':
+ type: string
+ path: creature-adjustment.url
+ is_null: false
+ values: 55
+ different_values: 55 (all different)
+ variants: [omitted]
+ [legacy_id]:
+ type: array
+ path: creature-adjustment.legacy_id
+ is_null: true
+ values: 2
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: creature-adjustment.legacy_id.[]
+ is_null: false
+ values: 2
+ different_values: 2
+ variants:
+ - "creature-adjustment-1" (x1)
+ - "creature-adjustment-2" (x1)
+ 'markdown':
+ type: string
+ path: creature-adjustment.markdown
+ is_null: false
+ values: 55
+ different_values: 55 (all different)
+ variants: [omitted]
+ 'name':
+ type: string
+ path: creature-adjustment.name
+ is_null: false
+ values: 55
+ different_values: 53
+ variants: [omitted]
+ 'primary_source_category':
+ type: string
+ path: creature-adjustment.primary_source_category
+ is_null: false
+ values: 55
+ different_values: 1 (all same)
+ variants: "Rulebooks" (x55)
+ 'rarity':
+ type: string
+ path: creature-adjustment.rarity
+ is_null: false
+ values: 55
+ different_values: 1 (all same)
+ variants: "common" (x55)
+ 'rarity_id':
+ type: integer
+ path: creature-adjustment.rarity_id
+ is_null: false
+ values: 55
+ different_values: 1 (all same)
+ variants: 1 (x55)
+ 'release_date':
+ type: string
+ path: creature-adjustment.release_date
+ is_null: false
+ values: 55
+ different_values: 8
+ variants:
+ - "2025-02-26" (x21)
+ - "2022-04-27" (x9)
+ - "2024-05-29" (x7)
+ - "2023-08-02" (x6)
+ - "2022-07-27" (x4)
+ - "2024-10-30" (x4)
+ - "2019-08-01" (x2)
+ - "2024-03-27" (x2)
+ [remaster_id]:
+ type: array
+ path: creature-adjustment.remaster_id
+ is_null: true
+ values: 2
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: creature-adjustment.remaster_id.[]
+ is_null: false
+ values: 2
+ different_values: 2
+ variants:
+ - "creature-adjustment-22" (x1)
+ - "creature-adjustment-23" (x1)
+ 'resistance':
+ type: object
+ path: creature-adjustment.resistance
+ is_null: false
+ values: 55
+ schema:
+ 'weakness':
+ type: object
+ path: creature-adjustment.weakness
+ is_null: false
+ values: 55
+ schema:
diff --git a/output/aonprd/creature-family.yaml b/output/aonprd/creature-family.yaml
new file mode 100644
index 0000000..d887682
--- /dev/null
+++ b/output/aonprd/creature-family.yaml
@@ -0,0 +1,263 @@
+name: creature-family
+values: 516
+schema:
+ 'category':
+ type: string
+ path: creature-family.category
+ is_null: false
+ values: 516
+ different_values: 1 (all same)
+ variants: "creature-family" (x516)
+ 'creature_family':
+ type: string
+ path: creature-family.creature_family
+ is_null: false
+ values: 516
+ different_values: 409
+ variants: [omitted]
+ 'creature_family_markdown':
+ type: string
+ path: creature-family.creature_family_markdown
+ is_null: false
+ values: 516
+ different_values: 409
+ variants: [omitted]
+ 'id':
+ type: string
+ path: creature-family.id
+ is_null: false
+ values: 516
+ different_values: 516 (all different)
+ variants: [omitted]
+ 'source_category':
+ type: array
+ path: creature-family.source_category
+ is_null: false
+ values: 516
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: creature-family.source_category.[]
+ is_null: false
+ values: 516
+ different_values: 4
+ variants:
+ - "Rulebooks" (x432)
+ - "Adventure Paths" (x62)
+ - "Lost Omens" (x17)
+ - "Adventures" (x5)
+ 'source_markdown':
+ type: string
+ path: creature-family.source_markdown
+ is_null: false
+ values: 516
+ different_values: 512
+ variants: [omitted]
+ 'speed':
+ type: object
+ path: creature-family.speed
+ is_null: false
+ values: 516
+ schema:
+ 'summary_markdown':
+ type: string
+ path: creature-family.summary_markdown
+ is_null: false
+ values: 516
+ different_values: 469
+ variants: [omitted]
+ 'type':
+ type: string
+ path: creature-family.type
+ is_null: false
+ values: 516
+ different_values: 1 (all same)
+ variants: "Creature Family" (x516)
+ 'url':
+ type: string
+ path: creature-family.url
+ is_null: false
+ values: 516
+ different_values: 516 (all different)
+ variants: [omitted]
+ 'weakness':
+ type: object
+ path: creature-family.weakness
+ is_null: false
+ values: 516
+ schema:
+ [image]:
+ type: array
+ path: creature-family.image
+ is_null: true
+ values: 33
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: creature-family.image.[]
+ is_null: false
+ values: 33
+ different_values: 33
+ variants: [omitted]
+ [legacy_id]:
+ type: array
+ path: creature-family.legacy_id
+ is_null: true
+ values: 127
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: creature-family.legacy_id.[]
+ is_null: false
+ values: 127
+ different_values: 127
+ variants: [omitted]
+ 'markdown':
+ type: string
+ path: creature-family.markdown
+ is_null: false
+ values: 516
+ different_values: 516 (all different)
+ variants: [omitted]
+ 'name':
+ type: string
+ path: creature-family.name
+ is_null: false
+ values: 516
+ different_values: 409
+ variants: [omitted]
+ 'primary_source_category':
+ type: string
+ path: creature-family.primary_source_category
+ is_null: false
+ values: 516
+ different_values: 4
+ variants:
+ - "Rulebooks" (x432)
+ - "Adventure Paths" (x62)
+ - "Lost Omens" (x17)
+ - "Adventures" (x5)
+ 'rarity':
+ type: string
+ path: creature-family.rarity
+ is_null: false
+ values: 516
+ different_values: 1 (all same)
+ variants: "common" (x516)
+ 'rarity_id':
+ type: integer
+ path: creature-family.rarity_id
+ is_null: false
+ values: 516
+ different_values: 1 (all same)
+ variants: 1 (x516)
+ 'release_date':
+ type: string
+ path: creature-family.release_date
+ is_null: false
+ values: 516
+ different_values: 45
+ variants: [omitted]
+ 'resistance':
+ type: object
+ path: creature-family.resistance
+ is_null: false
+ values: 516
+ schema:
+ [primary_source_group]:
+ type: string
+ path: creature-family.primary_source_group
+ is_null: true
+ values: 67
+ different_values: 19
+ variants:
+ - "Strength of Thousands" (x11)
+ - "Extinction Curse" (x9)
+ - "Abomination Vaults" (x6)
+ - "Blood Lords" (x5)
+ - "Age of Ashes" (x5)
+ - "Kingmaker" (x4)
+ - "Gatewalkers" (x4)
+ - "Stolen Fate" (x4)
+ - "Quest for the Frozen Flame" (x3)
+ - "Sky King's Tomb" (x3)
+ - "Season of Ghosts" (x3)
+ - "Fists of the Ruby Phoenix" (x2)
+ - "Seven Dooms for Sandpoint" (x2)
+ - "Threshold of Knowledge" (x1)
+ - "Shadows at Sundown" (x1)
+ - "Rusthenge" (x1)
+ - "Prey for Death" (x1)
+ - "The Fall of Plaguestone" (x1)
+ - "Agents of Edgewatch" (x1)
+ [remaster_id]:
+ type: array
+ path: creature-family.remaster_id
+ is_null: true
+ values: 127
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: creature-family.remaster_id.[]
+ is_null: false
+ values: 127
+ different_values: 127
+ variants: [omitted]
+ 'search_markdown':
+ type: string
+ path: creature-family.search_markdown
+ is_null: false
+ values: 516
+ different_values: 516 (all different)
+ variants: [omitted]
+ 'source':
+ type: array
+ path: creature-family.source
+ is_null: false
+ values: 516
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: creature-family.source.[]
+ is_null: false
+ values: 516
+ different_values: 57
+ variants: [omitted]
+ [source_group]:
+ type: array
+ path: creature-family.source_group
+ is_null: true
+ values: 67
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: creature-family.source_group.[]
+ is_null: false
+ values: 67
+ different_values: 19
+ variants:
+ - "Strength of Thousands" (x11)
+ - "Extinction Curse" (x9)
+ - "Abomination Vaults" (x6)
+ - "Blood Lords" (x5)
+ - "Age of Ashes" (x5)
+ - "Kingmaker" (x4)
+ - "Gatewalkers" (x4)
+ - "Stolen Fate" (x4)
+ - "Quest for the Frozen Flame" (x3)
+ - "Sky King's Tomb" (x3)
+ - "Season of Ghosts" (x3)
+ - "Fists of the Ruby Phoenix" (x2)
+ - "Seven Dooms for Sandpoint" (x2)
+ - "Threshold of Knowledge" (x1)
+ - "Shadows at Sundown" (x1)
+ - "Rusthenge" (x1)
+ - "Prey for Death" (x1)
+ - "The Fall of Plaguestone" (x1)
+ - "Agents of Edgewatch" (x1)
diff --git a/output/aonprd/creature-theme-template.yaml b/output/aonprd/creature-theme-template.yaml
new file mode 100644
index 0000000..5b17abc
--- /dev/null
+++ b/output/aonprd/creature-theme-template.yaml
@@ -0,0 +1,193 @@
+name: creature-theme-template
+values: 15
+schema:
+ 'category':
+ type: string
+ path: creature-theme-template.category
+ is_null: false
+ values: 15
+ different_values: 1 (all same)
+ variants: "creature-theme-template" (x15)
+ 'id':
+ type: string
+ path: creature-theme-template.id
+ is_null: false
+ values: 15
+ different_values: 15 (all different)
+ variants:
+ - "creature-theme-template-1" (x1)
+ - "creature-theme-template-2" (x1)
+ - "creature-theme-template-3" (x1)
+ - "creature-theme-template-4" (x1)
+ - "creature-theme-template-5" (x1)
+ - "creature-theme-template-6" (x1)
+ - "creature-theme-template-7" (x1)
+ - "creature-theme-template-8" (x1)
+ - "creature-theme-template-9" (x1)
+ - "creature-theme-template-11" (x1)
+ - "creature-theme-template-12" (x1)
+ - "creature-theme-template-13" (x1)
+ - "creature-theme-template-14" (x1)
+ - "creature-theme-template-15" (x1)
+ - "creature-theme-template-16" (x1)
+ 'markdown':
+ type: string
+ path: creature-theme-template.markdown
+ is_null: false
+ values: 15
+ different_values: 15 (all different)
+ variants: [omitted]
+ 'name':
+ type: string
+ path: creature-theme-template.name
+ is_null: false
+ values: 15
+ different_values: 15 (all different)
+ variants:
+ - "Aldori Swordlords" (x1)
+ - "Aspis Consortium" (x1)
+ - "Bellflower Network" (x1)
+ - "Eagle Knights" (x1)
+ - "Firebrands" (x1)
+ - "Hellknights" (x1)
+ - "Houses of Perfection" (x1)
+ - "Knights of Lastwall" (x1)
+ - "Lion Blades" (x1)
+ - "Pathfinder Society" (x1)
+ - "Red Mantis Assassin" (x1)
+ - "Whispering Way" (x1)
+ - "Deity Worshiper" (x1)
+ - "The Magaambya" (x1)
+ - "Hellbound Creature" (x1)
+ 'primary_source_category':
+ type: string
+ path: creature-theme-template.primary_source_category
+ is_null: false
+ values: 15
+ different_values: 2
+ variants:
+ - "Lost Omens" (x14)
+ - "Rulebooks" (x1)
+ 'rarity':
+ type: string
+ path: creature-theme-template.rarity
+ is_null: false
+ values: 15
+ different_values: 1 (all same)
+ variants: "common" (x15)
+ 'rarity_id':
+ type: integer
+ path: creature-theme-template.rarity_id
+ is_null: false
+ values: 15
+ different_values: 1 (all same)
+ variants: 1 (x15)
+ 'release_date':
+ type: string
+ path: creature-theme-template.release_date
+ is_null: false
+ values: 15
+ different_values: 3
+ variants:
+ - "2019-10-16" (x13)
+ - "2020-01-29" (x1)
+ - "2021-04-07" (x1)
+ 'resistance':
+ type: object
+ path: creature-theme-template.resistance
+ is_null: false
+ values: 15
+ schema:
+ 'search_markdown':
+ type: string
+ path: creature-theme-template.search_markdown
+ is_null: false
+ values: 15
+ different_values: 5
+ variants: [omitted]
+ 'source':
+ type: array
+ path: creature-theme-template.source
+ is_null: false
+ values: 15
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: creature-theme-template.source.[]
+ is_null: false
+ values: 15
+ different_values: 3
+ variants:
+ - "Character Guide" (x13)
+ - "Gods & Magic" (x1)
+ - "Bestiary 3" (x1)
+ 'source_category':
+ type: array
+ path: creature-theme-template.source_category
+ is_null: false
+ values: 15
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: creature-theme-template.source_category.[]
+ is_null: false
+ values: 15
+ different_values: 2
+ variants:
+ - "Lost Omens" (x14)
+ - "Rulebooks" (x1)
+ 'source_markdown':
+ type: string
+ path: creature-theme-template.source_markdown
+ is_null: false
+ values: 15
+ different_values: 5
+ variants:
+ - "[Character Guide](/Sources.aspx?ID=12) pg. 129 2.0" (x5)
+ - "[Character Guide](/Sources.aspx?ID=12) pg. 128 2.0" (x4)
+ - "[Character Guide](/Sources.aspx?ID=12) pg. 130 2.0" (x4)
+ - "[Gods & Magic](/Sources.aspx?ID=17) pg. 10 2.0" (x1)
+ - "[Bestiary 3](/Sources.aspx?ID=66) pg. 64" (x1)
+ 'speed':
+ type: object
+ path: creature-theme-template.speed
+ is_null: false
+ values: 15
+ schema:
+ 'type':
+ type: string
+ path: creature-theme-template.type
+ is_null: false
+ values: 15
+ different_values: 1 (all same)
+ variants: "Creature Theme Template" (x15)
+ 'url':
+ type: string
+ path: creature-theme-template.url
+ is_null: false
+ values: 15
+ different_values: 15 (all different)
+ variants:
+ - "/NPCThemeTemplates.aspx?ID=1" (x1)
+ - "/NPCThemeTemplates.aspx?ID=2" (x1)
+ - "/NPCThemeTemplates.aspx?ID=3" (x1)
+ - "/NPCThemeTemplates.aspx?ID=4" (x1)
+ - "/NPCThemeTemplates.aspx?ID=5" (x1)
+ - "/NPCThemeTemplates.aspx?ID=6" (x1)
+ - "/NPCThemeTemplates.aspx?ID=7" (x1)
+ - "/NPCThemeTemplates.aspx?ID=8" (x1)
+ - "/NPCThemeTemplates.aspx?ID=9" (x1)
+ - "/NPCThemeTemplates.aspx?ID=11" (x1)
+ - "/NPCThemeTemplates.aspx?ID=12" (x1)
+ - "/NPCThemeTemplates.aspx?ID=13" (x1)
+ - "/NPCThemeTemplates.aspx?ID=14" (x1)
+ - "/NPCThemeTemplates.aspx?ID=15" (x1)
+ - "/NPCThemeTemplates.aspx?ID=16" (x1)
+ 'weakness':
+ type: object
+ path: creature-theme-template.weakness
+ is_null: false
+ values: 15
+ schema:
diff --git a/output/aonprd/creature.yaml b/output/aonprd/creature.yaml
new file mode 100644
index 0000000..387ad56
--- /dev/null
+++ b/output/aonprd/creature.yaml
@@ -0,0 +1,2058 @@
+name: creature
+values: 3647
+schema:
+ 'ac':
+ type: integer
+ path: creature.ac
+ is_null: false
+ values: 3647
+ different_values: 47
+ variants: [omitted]
+ 'ac_scale_number':
+ type: integer
+ path: creature.ac_scale_number
+ is_null: false
+ values: 3647
+ different_values: 5
+ variants:
+ - 4 (x1973)
+ - 3 (x1547)
+ - 2 (x84)
+ - 5 (x38)
+ - 0 (x5)
+ 'category':
+ type: string
+ path: creature.category
+ is_null: false
+ values: 3647
+ different_values: 1 (all same)
+ variants: "creature" (x3647)
+ 'charisma':
+ type: integer
+ path: creature.charisma
+ is_null: false
+ values: 3647
+ different_values: 18
+ variants:
+ - 0 (x629)
+ - 4 (x430)
+ - 2 (x408)
+ - 3 (x380)
+ - 1 (x361)
+ - 5 (x281)
+ - 6 (x210)
+ - -1 (x206)
+ - -2 (x200)
+ - -5 (x163)
+ - 7 (x111)
+ - 8 (x91)
+ - -4 (x60)
+ - 9 (x50)
+ - -3 (x43)
+ - 10 (x18)
+ - 11 (x4)
+ - 12 (x2)
+ 'charisma_scale_number':
+ type: integer
+ path: creature.charisma_scale_number
+ is_null: false
+ values: 3647
+ different_values: 5
+ variants:
+ - 2 (x2584)
+ - 3 (x740)
+ - 4 (x300)
+ - 5 (x18)
+ - 0 (x5)
+ 'constitution':
+ type: integer
+ path: creature.constitution
+ is_null: false
+ values: 3647
+ different_values: 15
+ variants:
+ - 4 (x682)
+ - 3 (x607)
+ - 2 (x593)
+ - 5 (x411)
+ - 1 (x394)
+ - 6 (x307)
+ - 0 (x303)
+ - 7 (x147)
+ - 8 (x84)
+ - 9 (x67)
+ - -1 (x20)
+ - 10 (x18)
+ - 11 (x5)
+ - -2 (x5)
+ - 12 (x4)
+ 'constitution_scale_number':
+ type: integer
+ path: creature.constitution_scale_number
+ is_null: false
+ values: 3647
+ different_values: 5
+ variants:
+ - 2 (x1816)
+ - 3 (x1415)
+ - 4 (x368)
+ - 5 (x43)
+ - 0 (x5)
+ 'creature_family_markdown':
+ type: string
+ path: creature.creature_family_markdown
+ is_null: false
+ values: 3647
+ different_values: 509
+ variants: [omitted]
+ 'dexterity':
+ type: integer
+ path: creature.dexterity
+ is_null: false
+ values: 3647
+ different_values: 18
+ variants:
+ - 4 (x884)
+ - 3 (x709)
+ - 2 (x516)
+ - 5 (x418)
+ - 1 (x289)
+ - 6 (x280)
+ - 0 (x147)
+ - 7 (x126)
+ - 8 (x82)
+ - -1 (x67)
+ - 9 (x48)
+ - -2 (x24)
+ - -5 (x19)
+ - 10 (x15)
+ - -3 (x13)
+ - -4 (x4)
+ - 11 (x4)
+ - 12 (x2)
+ 'dexterity_scale_number':
+ type: integer
+ path: creature.dexterity_scale_number
+ is_null: false
+ values: 3647
+ different_values: 5
+ variants:
+ - 2 (x1731)
+ - 3 (x1188)
+ - 4 (x707)
+ - 5 (x16)
+ - 0 (x5)
+ [element]:
+ type: array
+ path: creature.element
+ is_null: true
+ values: 366
+ min_count: 1
+ max_count: 6
+ value_type:
+ type: string
+ path: creature.element.[]
+ is_null: false
+ values: 392
+ different_values: 6
+ variants:
+ - "Fire" (x113)
+ - "Earth" (x95)
+ - "Water" (x73)
+ - "Air" (x59)
+ - "Wood" (x31)
+ - "Metal" (x21)
+ 'fortitude_save':
+ type: integer
+ path: creature.fortitude_save
+ is_null: false
+ values: 3647
+ different_values: 48
+ variants: [omitted]
+ 'fortitude_save_scale_number':
+ type: integer
+ path: creature.fortitude_save_scale_number
+ is_null: false
+ values: 3647
+ different_values: 6
+ variants:
+ - 3 (x1555)
+ - 2 (x1233)
+ - 4 (x653)
+ - 1 (x150)
+ - 5 (x51)
+ - 0 (x5)
+ 'hp_raw':
+ type: string
+ path: creature.hp_raw
+ is_null: false
+ values: 3647
+ different_values: 579
+ variants: [omitted]
+ 'id':
+ type: string
+ path: creature.id
+ is_null: false
+ values: 3647
+ different_values: 3647 (all different)
+ variants: [omitted]
+ [hardness_raw]:
+ type: string
+ path: creature.hardness_raw
+ is_null: true
+ values: 32
+ different_values: 13
+ variants:
+ - "10" (x6)
+ - "8" (x6)
+ - "9" (x3)
+ - "4" (x3)
+ - "2" (x2)
+ - "6" (x2)
+ - "3" (x2)
+ - "14" (x2)
+ - "7" (x2)
+ - "5" (x1)
+ - "15" (x1)
+ - "11" (x1)
+ - "1" (x1)
+ 'hp_scale_number':
+ type: integer
+ path: creature.hp_scale_number
+ is_null: false
+ values: 3647
+ different_values: 4
+ variants:
+ - 3 (x1956)
+ - 2 (x1190)
+ - 4 (x496)
+ - 0 (x5)
+ [image]:
+ type: array
+ path: creature.image
+ is_null: true
+ values: 2089
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: creature.image.[]
+ is_null: false
+ values: 2089
+ different_values: 2048
+ variants: [omitted]
+ [immunity_markdown]:
+ type: string
+ path: creature.immunity_markdown
+ is_null: true
+ values: 1568
+ different_values: 531
+ variants: [omitted]
+ 'intelligence':
+ type: integer
+ path: creature.intelligence
+ is_null: false
+ values: 3647
+ different_values: 17
+ variants:
+ - 0 (x624)
+ - 2 (x406)
+ - 1 (x388)
+ - -4 (x383)
+ - -5 (x366)
+ - 4 (x277)
+ - 3 (x264)
+ - -1 (x228)
+ - 5 (x176)
+ - -2 (x175)
+ - -3 (x122)
+ - 6 (x105)
+ - 7 (x66)
+ - 8 (x38)
+ - 10 (x14)
+ - 9 (x13)
+ - 11 (x2)
+ [creature_ability]:
+ type: array
+ path: creature.creature_ability
+ is_null: true
+ values: 3602
+ min_count: 1
+ max_count: 14
+ value_type:
+ type: string
+ path: creature.creature_ability.[]
+ is_null: false
+ values: 14347
+ different_values: 6801
+ variants: [omitted]
+ [creature_family]:
+ type: string
+ path: creature.creature_family
+ is_null: true
+ values: 2058
+ different_values: 403
+ variants: [omitted]
+ 'intelligence_scale_number':
+ type: integer
+ path: creature.intelligence_scale_number
+ is_null: false
+ values: 3647
+ different_values: 5
+ variants:
+ - 2 (x3124)
+ - 3 (x362)
+ - 4 (x153)
+ - 0 (x5)
+ - 5 (x3)
+ 'language_markdown':
+ type: string
+ path: creature.language_markdown
+ is_null: false
+ values: 3647
+ different_values: 1142
+ variants: [omitted]
+ [alignment]:
+ type: string
+ path: creature.alignment
+ is_null: true
+ values: 2714
+ different_values: 11
+ variants:
+ - "N" (x816)
+ - "CE" (x568)
+ - "NE" (x544)
+ - "LE" (x275)
+ - "CN" (x181)
+ - "LN" (x122)
+ - "CG" (x80)
+ - "NG" (x72)
+ - "LG" (x47)
+ - "No Alignment" (x6)
+ - "Any" (x3)
+ 'source_markdown':
+ type: string
+ path: creature.source_markdown
+ is_null: false
+ values: 3647
+ different_values: 2984
+ variants: [omitted]
+ [attack_bonus_scale_number]:
+ type: array
+ path: creature.attack_bonus_scale_number
+ is_null: true
+ values: 3513
+ min_count: 1
+ max_count: 3
+ value_type:
+ type: integer
+ path: creature.attack_bonus_scale_number.[]
+ is_null: false
+ values: 4584
+ different_values: 5
+ variants:
+ - 3 (x1925)
+ - 4 (x1812)
+ - 2 (x766)
+ - 5 (x76)
+ - 0 (x5)
+ 'speed':
+ type: object
+ path: creature.speed
+ is_null: false
+ values: 3647
+ schema:
+ [burrow]:
+ type: integer
+ path: creature.speed.burrow
+ is_null: true
+ values: 193
+ different_values: 11
+ variants:
+ - 20 (x45)
+ - 25 (x27)
+ - 40 (x24)
+ - 10 (x23)
+ - 30 (x21)
+ - 5 (x18)
+ - 15 (x15)
+ - 35 (x7)
+ - 60 (x5)
+ - 45 (x4)
+ - 50 (x4)
+ [climb]:
+ type: integer
+ path: creature.speed.climb
+ is_null: true
+ values: 451
+ different_values: 11
+ variants:
+ - 20 (x150)
+ - 30 (x89)
+ - 25 (x87)
+ - 10 (x43)
+ - 15 (x30)
+ - 40 (x26)
+ - 35 (x12)
+ - 50 (x6)
+ - 60 (x5)
+ - 5 (x2)
+ - 45 (x1)
+ [fly]:
+ type: integer
+ path: creature.speed.fly
+ is_null: true
+ values: 847
+ different_values: 25
+ variants: [omitted]
+ [land]:
+ type: integer
+ path: creature.speed.land
+ is_null: true
+ values: 3437
+ different_values: 16
+ variants:
+ - 25 (x1472)
+ - 30 (x548)
+ - 20 (x458)
+ - 40 (x329)
+ - 35 (x212)
+ - 10 (x99)
+ - 15 (x98)
+ - 50 (x88)
+ - 5 (x46)
+ - 60 (x46)
+ - 45 (x23)
+ - 70 (x7)
+ - 80 (x5)
+ - 100 (x3)
+ - 0 (x2)
+ - 120 (x1)
+ [max]:
+ type: integer
+ path: creature.speed.max
+ is_null: true
+ values: 3642
+ different_values: 26
+ variants: [omitted]
+ [swim]:
+ type: integer
+ path: creature.speed.swim
+ is_null: true
+ values: 470
+ different_values: 13
+ variants:
+ - 30 (x97)
+ - 40 (x77)
+ - 25 (x75)
+ - 20 (x66)
+ - 50 (x38)
+ - 60 (x37)
+ - 35 (x26)
+ - 15 (x20)
+ - 80 (x18)
+ - 10 (x6)
+ - 100 (x6)
+ - 70 (x3)
+ - 45 (x1)
+ 'spell_markdown':
+ type: string
+ path: creature.spell_markdown
+ is_null: false
+ values: 3647
+ different_values: 1319
+ variants: [omitted]
+ 'strength':
+ type: integer
+ path: creature.strength
+ is_null: false
+ values: 3647
+ different_values: 18
+ variants:
+ - 4 (x572)
+ - 6 (x415)
+ - 5 (x406)
+ - 3 (x382)
+ - 2 (x371)
+ - 7 (x289)
+ - 0 (x262)
+ - 1 (x237)
+ - 8 (x228)
+ - 9 (x140)
+ - -5 (x108)
+ - 10 (x89)
+ - -1 (x59)
+ - -2 (x44)
+ - -3 (x16)
+ - 12 (x12)
+ - -4 (x10)
+ - 11 (x7)
+ 'strength_scale_number':
+ type: integer
+ path: creature.strength_scale_number
+ is_null: false
+ values: 3647
+ different_values: 5
+ variants:
+ - 2 (x1339)
+ - 4 (x1039)
+ - 3 (x1001)
+ - 5 (x263)
+ - 0 (x5)
+ 'strongest_save':
+ type: array
+ path: creature.strongest_save
+ is_null: false
+ values: 3647
+ min_count: 1
+ max_count: 5
+ value_type:
+ type: string
+ path: creature.strongest_save.[]
+ is_null: false
+ values: 6878
+ different_values: 5
+ variants:
+ - "fort" (x1558)
+ - "fortitude" (x1558)
+ - "ref" (x1453)
+ - "reflex" (x1453)
+ - "will" (x856)
+ 'tradition_markdown':
+ type: string
+ path: creature.tradition_markdown
+ is_null: false
+ values: 3647
+ different_values: 15
+ variants:
+ - "" (x2172)
+ - "[Divine](/SpellLists.aspx?Tradition=2)" (x465)
+ - "[Occult](/SpellLists.aspx?Tradition=3)" (x384)
+ - "[Primal](/SpellLists.aspx?Tradition=4)" (x351)
+ - "[Arcane](/SpellLists.aspx?Tradition=1)" (x237)
+ - "[Divine](/SpellLists.aspx?Tradition=2), [Occult](/SpellLists.aspx?Tradition=3)" (x11)
+ - "[Arcane](/SpellLists.aspx?Tradition=1), [Divine](/SpellLists.aspx?Tradition=2)" (x7)
+ - "[Arcane](/SpellLists.aspx?Tradition=1), [Occult](/SpellLists.aspx?Tradition=3)" (x6)
+ - "[Occult](/SpellLists.aspx?Tradition=3), [Primal](/SpellLists.aspx?Tradition=4)" (x4)
+ - "[Arcane](/SpellLists.aspx?Tradition=1), [Primal](/SpellLists.aspx?Tradition=4)" (x2)
+ - "[Primal](/SpellLists.aspx?Tradition=4), [Occult](/SpellLists.aspx?Tradition=3)" (x2)
+ - "[Occult](/SpellLists.aspx?Tradition=3), [Divine](/SpellLists.aspx?Tradition=2)" (x2)
+ - "[Occult](/SpellLists.aspx?Tradition=3), [Arcane](/SpellLists.aspx?Tradition=1)" (x2)
+ - "[Divine](/SpellLists.aspx?Tradition=2), [Primal](/SpellLists.aspx?Tradition=4)" (x1)
+ - "[Arcane](/SpellLists.aspx?Tradition=1), [Divine](/SpellLists.aspx?Tradition=2), [Occult](/SpellLists.aspx?Tradition=3)" (x1)
+ 'trait':
+ type: array
+ path: creature.trait
+ is_null: false
+ values: 3647
+ min_count: 2
+ max_count: 10
+ value_type:
+ type: string
+ path: creature.trait.[]
+ is_null: false
+ values: 15585
+ different_values: 227
+ variants: [omitted]
+ 'trait_markdown':
+ type: string
+ path: creature.trait_markdown
+ is_null: false
+ values: 3647
+ different_values: 1131
+ variants: [omitted]
+ 'type':
+ type: string
+ path: creature.type
+ is_null: false
+ values: 3647
+ different_values: 1 (all same)
+ variants: "Creature" (x3647)
+ 'url':
+ type: string
+ path: creature.url
+ is_null: false
+ values: 3647
+ different_values: 3647 (all different)
+ variants: [omitted]
+ 'weakest_save':
+ type: array
+ path: creature.weakest_save
+ is_null: false
+ values: 3647
+ min_count: 1
+ max_count: 5
+ value_type:
+ type: string
+ path: creature.weakest_save.[]
+ is_null: false
+ values: 6413
+ different_values: 5
+ variants:
+ - "will" (x1611)
+ - "ref" (x1227)
+ - "reflex" (x1227)
+ - "fort" (x1174)
+ - "fortitude" (x1174)
+ 'will_save':
+ type: integer
+ path: creature.will_save
+ is_null: false
+ values: 3647
+ different_values: 45
+ variants: [omitted]
+ 'will_save_scale_number':
+ type: integer
+ path: creature.will_save_scale_number
+ is_null: false
+ values: 3647
+ different_values: 6
+ variants:
+ - 2 (x1715)
+ - 3 (x1290)
+ - 4 (x346)
+ - 1 (x253)
+ - 5 (x38)
+ - 0 (x5)
+ 'wisdom':
+ type: integer
+ path: creature.wisdom
+ is_null: false
+ values: 3647
+ different_values: 16
+ variants:
+ - 2 (x825)
+ - 3 (x658)
+ - 4 (x511)
+ - 1 (x503)
+ - 0 (x351)
+ - 5 (x340)
+ - 6 (x237)
+ - 7 (x83)
+ - 8 (x52)
+ - -1 (x44)
+ - 9 (x18)
+ - 10 (x12)
+ - -2 (x10)
+ - -5 (x1)
+ - 11 (x1)
+ - 12 (x1)
+ 'wisdom_scale_number':
+ type: integer
+ path: creature.wisdom_scale_number
+ is_null: false
+ values: 3647
+ different_values: 5
+ variants:
+ - 2 (x2448)
+ - 3 (x996)
+ - 4 (x195)
+ - 0 (x5)
+ - 5 (x3)
+ [attack_bonus]:
+ type: array
+ path: creature.attack_bonus
+ is_null: true
+ values: 3513
+ min_count: 1
+ max_count: 6
+ value_type:
+ type: integer
+ path: creature.attack_bonus.[]
+ is_null: false
+ values: 7344
+ different_values: 49
+ variants: [omitted]
+ 'weakness':
+ type: object
+ path: creature.weakness
+ is_null: false
+ values: 3647
+ schema:
+ [acid]:
+ type: integer
+ path: creature.weakness.acid
+ is_null: true
+ values: 5
+ different_values: 3
+ variants:
+ - 10 (x3)
+ - 5 (x1)
+ - 15 (x1)
+ [area]:
+ type: integer
+ path: creature.weakness.area
+ is_null: true
+ values: 128
+ different_values: 15
+ variants:
+ - 5 (x39)
+ - 10 (x24)
+ - 15 (x17)
+ - 3 (x14)
+ - 8 (x10)
+ - 20 (x8)
+ - 4 (x4)
+ - 12 (x3)
+ - 7 (x2)
+ - 6 (x2)
+ - 9 (x1)
+ - 2 (x1)
+ - 13 (x1)
+ - 18 (x1)
+ - 19 (x1)
+ [bleed]:
+ type: integer
+ path: creature.weakness.bleed
+ is_null: true
+ values: 1
+ different_values: 1 (all same)
+ variants: 10 (x1)
+ [bludgeoning]:
+ type: integer
+ path: creature.weakness.bludgeoning
+ is_null: true
+ values: 24
+ different_values: 7
+ variants:
+ - 10 (x9)
+ - 5 (x7)
+ - 15 (x4)
+ - 7 (x1)
+ - 14 (x1)
+ - 2 (x1)
+ - 3 (x1)
+ [chaotic]:
+ type: integer
+ path: creature.weakness.chaotic
+ is_null: true
+ values: 12
+ different_values: 6
+ variants:
+ - 10 (x4)
+ - 15 (x3)
+ - 20 (x2)
+ - 5 (x1)
+ - 3 (x1)
+ - 25 (x1)
+ [cold]:
+ type: integer
+ path: creature.weakness.cold
+ is_null: true
+ values: 102
+ different_values: 11
+ variants:
+ - 10 (x36)
+ - 15 (x26)
+ - 5 (x21)
+ - 20 (x9)
+ - 3 (x4)
+ - 22 (x1)
+ - 8 (x1)
+ - 2 (x1)
+ - 25 (x1)
+ - 12 (x1)
+ - 6 (x1)
+ [cold_iron]:
+ type: integer
+ path: creature.weakness.cold_iron
+ is_null: true
+ values: 271
+ different_values: 11
+ variants:
+ - 5 (x72)
+ - 10 (x71)
+ - 15 (x59)
+ - 2 (x21)
+ - 20 (x20)
+ - 3 (x19)
+ - 4 (x4)
+ - 6 (x2)
+ - 18 (x1)
+ - 8 (x1)
+ - 1 (x1)
+ [electricity]:
+ type: integer
+ path: creature.weakness.electricity
+ is_null: true
+ values: 40
+ different_values: 9
+ variants:
+ - 10 (x13)
+ - 5 (x9)
+ - 15 (x6)
+ - 2 (x5)
+ - 20 (x2)
+ - 3 (x2)
+ - 6 (x1)
+ - 4 (x1)
+ - 8 (x1)
+ [evil]:
+ type: integer
+ path: creature.weakness.evil
+ is_null: true
+ values: 34
+ different_values: 6
+ variants:
+ - 10 (x11)
+ - 15 (x10)
+ - 5 (x7)
+ - 3 (x4)
+ - 25 (x1)
+ - 20 (x1)
+ [fire]:
+ type: integer
+ path: creature.weakness.fire
+ is_null: true
+ values: 192
+ different_values: 9
+ variants:
+ - 10 (x76)
+ - 5 (x52)
+ - 15 (x31)
+ - 3 (x11)
+ - 20 (x9)
+ - 2 (x8)
+ - 4 (x3)
+ - 8 (x1)
+ - 7 (x1)
+ [force]:
+ type: integer
+ path: creature.weakness.force
+ is_null: true
+ values: 2
+ different_values: 2
+ variants:
+ - 15 (x1)
+ - 20 (x1)
+ [good]:
+ type: integer
+ path: creature.weakness.good
+ is_null: true
+ values: 173
+ different_values: 9
+ variants:
+ - 10 (x55)
+ - 15 (x43)
+ - 5 (x39)
+ - 20 (x19)
+ - 3 (x11)
+ - 2 (x3)
+ - 24 (x1)
+ - 26 (x1)
+ - 6 (x1)
+ [holy]:
+ type: integer
+ path: creature.weakness.holy
+ is_null: true
+ values: 36
+ different_values: 5
+ variants:
+ - 10 (x10)
+ - 15 (x10)
+ - 5 (x9)
+ - 3 (x5)
+ - 20 (x2)
+ [lawful]:
+ type: integer
+ path: creature.weakness.lawful
+ is_null: true
+ values: 21
+ different_values: 5
+ variants:
+ - 15 (x6)
+ - 10 (x6)
+ - 5 (x4)
+ - 3 (x3)
+ - 20 (x2)
+ [mental]:
+ type: integer
+ path: creature.weakness.mental
+ is_null: true
+ values: 11
+ different_values: 6
+ variants:
+ - 10 (x5)
+ - 15 (x2)
+ - 3 (x1)
+ - 5 (x1)
+ - 20 (x1)
+ - 2 (x1)
+ [orichalcum]:
+ type: integer
+ path: creature.weakness.orichalcum
+ is_null: true
+ values: 25
+ different_values: 7
+ variants:
+ - 10 (x7)
+ - 5 (x5)
+ - 15 (x4)
+ - 2 (x4)
+ - 20 (x2)
+ - 3 (x2)
+ - 4 (x1)
+ [physical]:
+ type: integer
+ path: creature.weakness.physical
+ is_null: true
+ values: 3
+ different_values: 2
+ variants:
+ - 10 (x2)
+ - 2 (x1)
+ [piercing]:
+ type: integer
+ path: creature.weakness.piercing
+ is_null: true
+ values: 13
+ different_values: 6
+ variants:
+ - 10 (x6)
+ - 5 (x2)
+ - 15 (x2)
+ - 20 (x1)
+ - 2 (x1)
+ - 7 (x1)
+ [poison]:
+ type: integer
+ path: creature.weakness.poison
+ is_null: true
+ values: 1
+ different_values: 1 (all same)
+ variants: 5 (x1)
+ [silver]:
+ type: integer
+ path: creature.weakness.silver
+ is_null: true
+ values: 50
+ different_values: 4
+ variants:
+ - 5 (x23)
+ - 15 (x13)
+ - 10 (x9)
+ - 20 (x5)
+ [slashing]:
+ type: integer
+ path: creature.weakness.slashing
+ is_null: true
+ values: 82
+ different_values: 7
+ variants:
+ - 5 (x33)
+ - 10 (x33)
+ - 15 (x8)
+ - 2 (x3)
+ - 8 (x2)
+ - 3 (x2)
+ - 7 (x1)
+ [sonic]:
+ type: integer
+ path: creature.weakness.sonic
+ is_null: true
+ values: 17
+ different_values: 5
+ variants:
+ - 15 (x6)
+ - 5 (x5)
+ - 10 (x4)
+ - 24 (x1)
+ - 20 (x1)
+ [spirit]:
+ type: integer
+ path: creature.weakness.spirit
+ is_null: true
+ values: 5
+ different_values: 3
+ variants:
+ - 20 (x2)
+ - 15 (x2)
+ - 10 (x1)
+ [splash]:
+ type: integer
+ path: creature.weakness.splash
+ is_null: true
+ values: 28
+ different_values: 10
+ variants:
+ - 5 (x9)
+ - 10 (x6)
+ - 15 (x3)
+ - 8 (x3)
+ - 3 (x2)
+ - 4 (x1)
+ - 12 (x1)
+ - 20 (x1)
+ - 2 (x1)
+ - 9 (x1)
+ [unholy]:
+ type: integer
+ path: creature.weakness.unholy
+ is_null: true
+ values: 19
+ different_values: 4
+ variants:
+ - 10 (x8)
+ - 15 (x5)
+ - 3 (x3)
+ - 5 (x3)
+ [vitality]:
+ type: integer
+ path: creature.weakness.vitality
+ is_null: true
+ values: 65
+ different_values: 10
+ variants:
+ - 10 (x28)
+ - 5 (x21)
+ - 15 (x8)
+ - 3 (x2)
+ - 7 (x1)
+ - 12 (x1)
+ - 1 (x1)
+ - 2 (x1)
+ - 8 (x1)
+ - 20 (x1)
+ [void]:
+ type: integer
+ path: creature.weakness.void
+ is_null: true
+ values: 6
+ different_values: 4
+ variants:
+ - 20 (x3)
+ - 10 (x1)
+ - 15 (x1)
+ - 3 (x1)
+ [legacy_id]:
+ type: array
+ path: creature.legacy_id
+ is_null: true
+ values: 463
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: creature.legacy_id.[]
+ is_null: false
+ values: 463
+ different_values: 463
+ variants: [omitted]
+ 'level':
+ type: integer
+ path: creature.level
+ is_null: false
+ values: 3647
+ different_values: 27
+ variants: [omitted]
+ 'markdown':
+ type: string
+ path: creature.markdown
+ is_null: false
+ values: 3647
+ different_values: 3647 (all different)
+ variants: [omitted]
+ 'name':
+ type: string
+ path: creature.name
+ is_null: false
+ values: 3647
+ different_values: 3197
+ variants: [omitted]
+ 'perception':
+ type: integer
+ path: creature.perception
+ is_null: false
+ values: 3647
+ different_values: 46
+ variants: [omitted]
+ 'perception_scale_number':
+ type: integer
+ path: creature.perception_scale_number
+ is_null: false
+ values: 3647
+ different_values: 6
+ variants:
+ - 3 (x1967)
+ - 2 (x1074)
+ - 4 (x427)
+ - 1 (x142)
+ - 5 (x32)
+ - 0 (x5)
+ 'primary_source_category':
+ type: string
+ path: creature.primary_source_category
+ is_null: false
+ values: 3647
+ different_values: 5
+ variants:
+ - "Rulebooks" (x2124)
+ - "Adventure Paths" (x1270)
+ - "Adventures" (x123)
+ - "Lost Omens" (x113)
+ - "Blog Posts" (x17)
+ [primary_source_group]:
+ type: string
+ path: creature.primary_source_group
+ is_null: true
+ values: 1393
+ different_values: 27
+ variants: [omitted]
+ [resistance_markdown]:
+ type: string
+ path: creature.resistance_markdown
+ is_null: true
+ values: 1071
+ different_values: 610
+ variants: [omitted]
+ 'search_markdown':
+ type: string
+ path: creature.search_markdown
+ is_null: false
+ values: 3647
+ different_values: 3642
+ variants: [omitted]
+ [pfs]:
+ type: string
+ path: creature.pfs
+ is_null: true
+ values: 1866
+ different_values: 3
+ variants:
+ - "Standard" (x1758)
+ - "Limited" (x103)
+ - "Restricted" (x5)
+ 'rarity':
+ type: string
+ path: creature.rarity
+ is_null: false
+ values: 3647
+ different_values: 4
+ variants:
+ - "common" (x1856)
+ - "uncommon" (x686)
+ - "unique" (x621)
+ - "rare" (x484)
+ 'rarity_id':
+ type: integer
+ path: creature.rarity_id
+ is_null: false
+ values: 3647
+ different_values: 4
+ variants:
+ - 1 (x1856)
+ - 2 (x686)
+ - 4 (x621)
+ - 3 (x484)
+ 'reflex_save':
+ type: integer
+ path: creature.reflex_save
+ is_null: false
+ values: 3647
+ different_values: 44
+ variants: [omitted]
+ 'reflex_save_scale_number':
+ type: integer
+ path: creature.reflex_save_scale_number
+ is_null: false
+ values: 3647
+ different_values: 6
+ variants:
+ - 3 (x1599)
+ - 2 (x1234)
+ - 4 (x518)
+ - 1 (x265)
+ - 5 (x26)
+ - 0 (x5)
+ 'release_date':
+ type: string
+ path: creature.release_date
+ is_null: false
+ values: 3647
+ different_values: 77
+ variants: [omitted]
+ 'resistance':
+ type: object
+ path: creature.resistance
+ is_null: false
+ values: 3647
+ schema:
+ [acid]:
+ type: integer
+ path: creature.resistance.acid
+ is_null: true
+ values: 180
+ different_values: 16
+ variants:
+ - 10 (x59)
+ - 5 (x47)
+ - 15 (x24)
+ - 20 (x22)
+ - 3 (x6)
+ - 2 (x6)
+ - 8 (x5)
+ - 25 (x2)
+ - 12 (x2)
+ - 24 (x1)
+ - 26 (x1)
+ - 4 (x1)
+ - 1 (x1)
+ - 6 (x1)
+ - 14 (x1)
+ - 7 (x1)
+ [all]:
+ type: integer
+ path: creature.resistance.all
+ is_null: true
+ values: 121
+ different_values: 13
+ variants:
+ - 10 (x43)
+ - 5 (x38)
+ - 15 (x16)
+ - 2 (x6)
+ - 8 (x5)
+ - 3 (x3)
+ - 20 (x2)
+ - 25 (x2)
+ - 12 (x2)
+ - 4 (x1)
+ - 1 (x1)
+ - 14 (x1)
+ - 7 (x1)
+ [area]:
+ type: integer
+ path: creature.resistance.area
+ is_null: true
+ values: 121
+ different_values: 13
+ variants:
+ - 10 (x43)
+ - 5 (x38)
+ - 15 (x16)
+ - 2 (x6)
+ - 8 (x5)
+ - 3 (x3)
+ - 20 (x2)
+ - 25 (x2)
+ - 12 (x2)
+ - 4 (x1)
+ - 1 (x1)
+ - 14 (x1)
+ - 7 (x1)
+ [bleed]:
+ type: integer
+ path: creature.resistance.bleed
+ is_null: true
+ values: 121
+ different_values: 13
+ variants:
+ - 10 (x43)
+ - 5 (x38)
+ - 15 (x16)
+ - 2 (x6)
+ - 8 (x5)
+ - 3 (x3)
+ - 20 (x2)
+ - 25 (x2)
+ - 12 (x2)
+ - 4 (x1)
+ - 1 (x1)
+ - 14 (x1)
+ - 7 (x1)
+ [bludgeoning]:
+ type: integer
+ path: creature.resistance.bludgeoning
+ is_null: true
+ values: 466
+ different_values: 17
+ variants:
+ - 10 (x148)
+ - 5 (x129)
+ - 15 (x81)
+ - 3 (x25)
+ - 2 (x23)
+ - 20 (x22)
+ - 8 (x10)
+ - 7 (x6)
+ - 4 (x4)
+ - 14 (x4)
+ - 25 (x3)
+ - 12 (x3)
+ - 6 (x3)
+ - 9 (x2)
+ - 24 (x1)
+ - 22 (x1)
+ - 1 (x1)
+ [chaotic]:
+ type: integer
+ path: creature.resistance.chaotic
+ is_null: true
+ values: 122
+ different_values: 13
+ variants:
+ - 10 (x44)
+ - 5 (x38)
+ - 15 (x16)
+ - 2 (x6)
+ - 8 (x5)
+ - 3 (x3)
+ - 20 (x2)
+ - 25 (x2)
+ - 12 (x2)
+ - 4 (x1)
+ - 1 (x1)
+ - 14 (x1)
+ - 7 (x1)
+ [cold]:
+ type: integer
+ path: creature.resistance.cold
+ is_null: true
+ values: 271
+ different_values: 15
+ variants:
+ - 10 (x105)
+ - 5 (x75)
+ - 15 (x40)
+ - 20 (x15)
+ - 2 (x10)
+ - 3 (x9)
+ - 8 (x5)
+ - 25 (x3)
+ - 12 (x3)
+ - 24 (x1)
+ - 26 (x1)
+ - 4 (x1)
+ - 1 (x1)
+ - 14 (x1)
+ - 7 (x1)
+ [cold_iron]:
+ type: integer
+ path: creature.resistance.cold_iron
+ is_null: true
+ values: 119
+ different_values: 13
+ variants:
+ - 10 (x41)
+ - 5 (x38)
+ - 15 (x16)
+ - 2 (x6)
+ - 8 (x5)
+ - 3 (x3)
+ - 20 (x2)
+ - 25 (x2)
+ - 12 (x2)
+ - 4 (x1)
+ - 1 (x1)
+ - 14 (x1)
+ - 7 (x1)
+ [electricity]:
+ type: integer
+ path: creature.resistance.electricity
+ is_null: true
+ values: 235
+ different_values: 18
+ variants:
+ - 10 (x79)
+ - 5 (x75)
+ - 15 (x26)
+ - 20 (x11)
+ - 3 (x9)
+ - 2 (x9)
+ - 8 (x6)
+ - 12 (x4)
+ - 25 (x3)
+ - 7 (x3)
+ - 4 (x2)
+ - 1 (x2)
+ - 22 (x1)
+ - 16 (x1)
+ - 24 (x1)
+ - 26 (x1)
+ - 18 (x1)
+ - 14 (x1)
+ [evil]:
+ type: integer
+ path: creature.resistance.evil
+ is_null: true
+ values: 124
+ different_values: 13
+ variants:
+ - 10 (x44)
+ - 5 (x40)
+ - 15 (x16)
+ - 2 (x6)
+ - 8 (x5)
+ - 3 (x3)
+ - 20 (x2)
+ - 25 (x2)
+ - 12 (x2)
+ - 4 (x1)
+ - 1 (x1)
+ - 14 (x1)
+ - 7 (x1)
+ [fire]:
+ type: integer
+ path: creature.resistance.fire
+ is_null: true
+ values: 319
+ different_values: 15
+ variants:
+ - 10 (x105)
+ - 5 (x89)
+ - 15 (x54)
+ - 20 (x18)
+ - 3 (x15)
+ - 2 (x11)
+ - 8 (x6)
+ - 25 (x4)
+ - 1 (x4)
+ - 12 (x3)
+ - 4 (x3)
+ - 7 (x3)
+ - 6 (x2)
+ - 24 (x1)
+ - 14 (x1)
+ [force]:
+ type: integer
+ path: creature.resistance.force
+ is_null: true
+ values: 19
+ different_values: 4
+ variants:
+ - 10 (x7)
+ - 15 (x6)
+ - 5 (x5)
+ - 3 (x1)
+ [good]:
+ type: integer
+ path: creature.resistance.good
+ is_null: true
+ values: 121
+ different_values: 13
+ variants:
+ - 10 (x43)
+ - 5 (x38)
+ - 15 (x16)
+ - 2 (x6)
+ - 8 (x5)
+ - 3 (x3)
+ - 20 (x2)
+ - 25 (x2)
+ - 12 (x2)
+ - 4 (x1)
+ - 1 (x1)
+ - 14 (x1)
+ - 7 (x1)
+ [holy]:
+ type: integer
+ path: creature.resistance.holy
+ is_null: true
+ values: 121
+ different_values: 13
+ variants:
+ - 10 (x43)
+ - 5 (x38)
+ - 15 (x16)
+ - 2 (x6)
+ - 8 (x5)
+ - 3 (x3)
+ - 20 (x2)
+ - 25 (x2)
+ - 12 (x2)
+ - 4 (x1)
+ - 1 (x1)
+ - 14 (x1)
+ - 7 (x1)
+ [lawful]:
+ type: integer
+ path: creature.resistance.lawful
+ is_null: true
+ values: 121
+ different_values: 13
+ variants:
+ - 10 (x43)
+ - 5 (x38)
+ - 15 (x16)
+ - 2 (x6)
+ - 8 (x5)
+ - 3 (x3)
+ - 20 (x2)
+ - 25 (x2)
+ - 12 (x2)
+ - 4 (x1)
+ - 1 (x1)
+ - 14 (x1)
+ - 7 (x1)
+ [mental]:
+ type: integer
+ path: creature.resistance.mental
+ is_null: true
+ values: 203
+ different_values: 15
+ variants:
+ - 10 (x74)
+ - 5 (x50)
+ - 15 (x38)
+ - 20 (x11)
+ - 3 (x8)
+ - 2 (x6)
+ - 8 (x5)
+ - 25 (x3)
+ - 12 (x2)
+ - 4 (x1)
+ - 13 (x1)
+ - 9 (x1)
+ - 1 (x1)
+ - 14 (x1)
+ - 7 (x1)
+ [orichalcum]:
+ type: integer
+ path: creature.resistance.orichalcum
+ is_null: true
+ values: 121
+ different_values: 13
+ variants:
+ - 10 (x43)
+ - 5 (x38)
+ - 15 (x16)
+ - 2 (x6)
+ - 8 (x5)
+ - 3 (x3)
+ - 20 (x2)
+ - 25 (x2)
+ - 12 (x2)
+ - 4 (x1)
+ - 1 (x1)
+ - 14 (x1)
+ - 7 (x1)
+ [physical]:
+ type: integer
+ path: creature.resistance.physical
+ is_null: true
+ values: 390
+ different_values: 16
+ variants:
+ - 10 (x143)
+ - 5 (x93)
+ - 15 (x83)
+ - 20 (x19)
+ - 3 (x16)
+ - 2 (x8)
+ - 8 (x7)
+ - 12 (x4)
+ - 6 (x3)
+ - 7 (x3)
+ - 25 (x3)
+ - 14 (x3)
+ - 4 (x2)
+ - 24 (x1)
+ - 22 (x1)
+ - 1 (x1)
+ [piercing]:
+ type: integer
+ path: creature.resistance.piercing
+ is_null: true
+ values: 536
+ different_values: 18
+ variants:
+ - 10 (x177)
+ - 5 (x159)
+ - 15 (x96)
+ - 20 (x23)
+ - 3 (x21)
+ - 2 (x13)
+ - 8 (x12)
+ - 7 (x8)
+ - 6 (x6)
+ - 12 (x5)
+ - 4 (x4)
+ - 25 (x3)
+ - 14 (x3)
+ - 9 (x2)
+ - 24 (x1)
+ - 22 (x1)
+ - 13 (x1)
+ - 1 (x1)
+ [poison]:
+ type: integer
+ path: creature.resistance.poison
+ is_null: true
+ values: 249
+ different_values: 16
+ variants:
+ - 10 (x79)
+ - 5 (x70)
+ - 15 (x42)
+ - 2 (x14)
+ - 20 (x13)
+ - 8 (x10)
+ - 3 (x8)
+ - 25 (x2)
+ - 12 (x2)
+ - 4 (x2)
+ - 14 (x2)
+ - 24 (x1)
+ - 26 (x1)
+ - 1 (x1)
+ - 7 (x1)
+ - 6 (x1)
+ [precision]:
+ type: integer
+ path: creature.resistance.precision
+ is_null: true
+ values: 137
+ different_values: 13
+ variants:
+ - 10 (x48)
+ - 5 (x41)
+ - 15 (x18)
+ - 3 (x6)
+ - 2 (x6)
+ - 8 (x5)
+ - 20 (x5)
+ - 25 (x2)
+ - 12 (x2)
+ - 4 (x1)
+ - 1 (x1)
+ - 14 (x1)
+ - 7 (x1)
+ [silver]:
+ type: integer
+ path: creature.resistance.silver
+ is_null: true
+ values: 122
+ different_values: 13
+ variants:
+ - 10 (x44)
+ - 5 (x38)
+ - 15 (x16)
+ - 2 (x6)
+ - 8 (x5)
+ - 3 (x3)
+ - 20 (x2)
+ - 25 (x2)
+ - 12 (x2)
+ - 4 (x1)
+ - 1 (x1)
+ - 14 (x1)
+ - 7 (x1)
+ [slashing]:
+ type: integer
+ path: creature.resistance.slashing
+ is_null: true
+ values: 506
+ different_values: 18
+ variants:
+ - 10 (x164)
+ - 5 (x148)
+ - 15 (x88)
+ - 3 (x28)
+ - 20 (x22)
+ - 2 (x13)
+ - 8 (x12)
+ - 7 (x7)
+ - 6 (x5)
+ - 12 (x5)
+ - 25 (x3)
+ - 4 (x3)
+ - 14 (x3)
+ - 24 (x1)
+ - 22 (x1)
+ - 9 (x1)
+ - 13 (x1)
+ - 1 (x1)
+ [sonic]:
+ type: integer
+ path: creature.resistance.sonic
+ is_null: true
+ values: 152
+ different_values: 15
+ variants:
+ - 5 (x46)
+ - 10 (x46)
+ - 15 (x28)
+ - 20 (x7)
+ - 2 (x7)
+ - 8 (x5)
+ - 3 (x3)
+ - 25 (x2)
+ - 12 (x2)
+ - 22 (x1)
+ - 30 (x1)
+ - 4 (x1)
+ - 1 (x1)
+ - 14 (x1)
+ - 7 (x1)
+ [spirit]:
+ type: integer
+ path: creature.resistance.spirit
+ is_null: true
+ values: 108
+ different_values: 11
+ variants:
+ - 10 (x40)
+ - 5 (x33)
+ - 15 (x16)
+ - 2 (x6)
+ - 8 (x4)
+ - 20 (x2)
+ - 25 (x2)
+ - 3 (x2)
+ - 12 (x1)
+ - 4 (x1)
+ - 1 (x1)
+ [splash]:
+ type: integer
+ path: creature.resistance.splash
+ is_null: true
+ values: 121
+ different_values: 13
+ variants:
+ - 10 (x43)
+ - 5 (x38)
+ - 15 (x16)
+ - 2 (x6)
+ - 8 (x5)
+ - 3 (x3)
+ - 20 (x2)
+ - 25 (x2)
+ - 12 (x2)
+ - 4 (x1)
+ - 1 (x1)
+ - 14 (x1)
+ - 7 (x1)
+ [unholy]:
+ type: integer
+ path: creature.resistance.unholy
+ is_null: true
+ values: 121
+ different_values: 13
+ variants:
+ - 10 (x43)
+ - 5 (x38)
+ - 15 (x16)
+ - 2 (x6)
+ - 8 (x5)
+ - 3 (x3)
+ - 20 (x2)
+ - 25 (x2)
+ - 12 (x2)
+ - 4 (x1)
+ - 1 (x1)
+ - 14 (x1)
+ - 7 (x1)
+ [vitality]:
+ type: integer
+ path: creature.resistance.vitality
+ is_null: true
+ values: 45
+ different_values: 9
+ variants:
+ - 5 (x12)
+ - 10 (x11)
+ - 15 (x8)
+ - 2 (x4)
+ - 8 (x4)
+ - 3 (x3)
+ - 30 (x1)
+ - 18 (x1)
+ - 1 (x1)
+ [void]:
+ type: integer
+ path: creature.resistance.void
+ is_null: true
+ values: 170
+ different_values: 13
+ variants:
+ - 10 (x55)
+ - 5 (x47)
+ - 15 (x31)
+ - 2 (x10)
+ - 8 (x6)
+ - 20 (x6)
+ - 3 (x5)
+ - 25 (x2)
+ - 12 (x2)
+ - 4 (x2)
+ - 7 (x2)
+ - 1 (x1)
+ - 14 (x1)
+ 'size':
+ type: array
+ path: creature.size
+ is_null: false
+ values: 3647
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: creature.size.[]
+ is_null: false
+ values: 3647
+ different_values: 6
+ variants:
+ - "Medium" (x1774)
+ - "Large" (x775)
+ - "Small" (x407)
+ - "Huge" (x305)
+ - "Gargantuan" (x242)
+ - "Tiny" (x144)
+ [remaster_id]:
+ type: array
+ path: creature.remaster_id
+ is_null: true
+ values: 463
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: creature.remaster_id.[]
+ is_null: false
+ values: 463
+ different_values: 463
+ variants: [omitted]
+ 'skill_markdown':
+ type: string
+ path: creature.skill_markdown
+ is_null: false
+ values: 3647
+ different_values: 3021
+ variants: [omitted]
+ 'source_category':
+ type: array
+ path: creature.source_category
+ is_null: false
+ values: 3647
+ min_count: 1
+ max_count: 2
+ value_type:
+ type: string
+ path: creature.source_category.[]
+ is_null: false
+ values: 3745
+ different_values: 5
+ variants:
+ - "Rulebooks" (x2160)
+ - "Adventure Paths" (x1319)
+ - "Adventures" (x126)
+ - "Lost Omens" (x123)
+ - "Blog Posts" (x17)
+ [school]:
+ type: string
+ path: creature.school
+ is_null: true
+ values: 5
+ different_values: 3
+ variants:
+ - "illusion" (x3)
+ - "evocation" (x1)
+ - "necromancy" (x1)
+ [sense_markdown]:
+ type: string
+ path: creature.sense_markdown
+ is_null: true
+ values: 3061
+ different_values: 652
+ variants: [omitted]
+ 'size_id':
+ type: array
+ path: creature.size_id
+ is_null: false
+ values: 3647
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: integer
+ path: creature.size_id.[]
+ is_null: false
+ values: 3647
+ different_values: 6
+ variants:
+ - 3 (x1774)
+ - 4 (x775)
+ - 2 (x407)
+ - 5 (x305)
+ - 6 (x242)
+ - 1 (x144)
+ [source_group]:
+ type: array
+ path: creature.source_group
+ is_null: true
+ values: 1439
+ min_count: 1
+ max_count: 2
+ value_type:
+ type: string
+ path: creature.source_group.[]
+ is_null: false
+ values: 1449
+ different_values: 27
+ variants: [omitted]
+ [speed_markdown]:
+ type: string
+ path: creature.speed_markdown
+ is_null: true
+ values: 3643
+ different_values: 676
+ variants: [omitted]
+ [spell_attack_bonus]:
+ type: array
+ path: creature.spell_attack_bonus
+ is_null: true
+ values: 680
+ min_count: 1
+ max_count: 3
+ value_type:
+ type: integer
+ path: creature.spell_attack_bonus.[]
+ is_null: false
+ values: 717
+ different_values: 40
+ variants: [omitted]
+ [spell_attack_bonus_scale_number]:
+ type: array
+ path: creature.spell_attack_bonus_scale_number
+ is_null: true
+ values: 680
+ min_count: 1
+ max_count: 2
+ value_type:
+ type: integer
+ path: creature.spell_attack_bonus_scale_number.[]
+ is_null: false
+ values: 683
+ different_values: 4
+ variants:
+ - 4 (x495)
+ - 3 (x169)
+ - 5 (x16)
+ - 0 (x3)
+ [spell_dc]:
+ type: array
+ path: creature.spell_dc
+ is_null: true
+ values: 1504
+ min_count: 1
+ max_count: 4
+ value_type:
+ type: integer
+ path: creature.spell_dc.[]
+ is_null: false
+ values: 1770
+ different_values: 39
+ variants: [omitted]
+ [spell_dc_scale_number]:
+ type: array
+ path: creature.spell_dc_scale_number
+ is_null: true
+ values: 1504
+ min_count: 1
+ max_count: 2
+ value_type:
+ type: integer
+ path: creature.spell_dc_scale_number.[]
+ is_null: false
+ values: 1527
+ different_values: 4
+ variants:
+ - 4 (x1081)
+ - 3 (x415)
+ - 5 (x27)
+ - 0 (x4)
+ 'source':
+ type: array
+ path: creature.source
+ is_null: false
+ values: 3647
+ min_count: 1
+ max_count: 2
+ value_type:
+ type: string
+ path: creature.source.[]
+ is_null: false
+ values: 3749
+ different_values: 107
+ variants: [omitted]
+ [spoilers]:
+ type: string
+ path: creature.spoilers
+ is_null: true
+ values: 1218
+ different_values: 26
+ variants: [omitted]
+ [strike_damage_average]:
+ type: array
+ path: creature.strike_damage_average
+ is_null: true
+ values: 3514
+ min_count: 1
+ max_count: 6
+ value_type:
+ type: integer
+ path: creature.strike_damage_average.[]
+ is_null: false
+ values: 7241
+ different_values: 63
+ variants: [omitted]
+ [strike_damage_scale_number]:
+ type: array
+ path: creature.strike_damage_scale_number
+ is_null: true
+ values: 3514
+ min_count: 1
+ max_count: 4
+ value_type:
+ type: integer
+ path: creature.strike_damage_scale_number.[]
+ is_null: false
+ values: 5016
+ different_values: 5
+ variants:
+ - 2 (x2283)
+ - 3 (x1649)
+ - 4 (x974)
+ - 5 (x105)
+ - 0 (x5)
+ [summary_markdown]:
+ type: string
+ path: creature.summary_markdown
+ is_null: true
+ values: 2954
+ different_values: 2657
+ variants: [omitted]
+ [tradition]:
+ type: array
+ path: creature.tradition
+ is_null: true
+ values: 1475
+ min_count: 1
+ max_count: 3
+ value_type:
+ type: string
+ path: creature.tradition.[]
+ is_null: false
+ values: 1514
+ different_values: 4
+ variants:
+ - "Divine" (x487)
+ - "Occult" (x412)
+ - "Primal" (x360)
+ - "Arcane" (x255)
+ [vision]:
+ type: string
+ path: creature.vision
+ is_null: true
+ values: 2803
+ different_values: 3
+ variants:
+ - "Darkvision" (x2027)
+ - "Low-light vision" (x621)
+ - "Greater darkvision" (x155)
+ [weakness_markdown]:
+ type: string
+ path: creature.weakness_markdown
+ is_null: true
+ values: 1151
+ different_values: 429
+ variants: [omitted]
diff --git a/output/aonprd/curse.yaml b/output/aonprd/curse.yaml
new file mode 100644
index 0000000..0130c88
--- /dev/null
+++ b/output/aonprd/curse.yaml
@@ -0,0 +1,364 @@
+name: curse
+values: 76
+schema:
+ 'category':
+ type: string
+ path: curse.category
+ is_null: false
+ values: 76
+ different_values: 1 (all same)
+ variants: "curse" (x76)
+ 'id':
+ type: string
+ path: curse.id
+ is_null: false
+ values: 76
+ different_values: 76 (all different)
+ variants: [omitted]
+ [element]:
+ type: array
+ path: curse.element
+ is_null: true
+ values: 2
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: curse.element.[]
+ is_null: false
+ values: 2
+ different_values: 1 (all same)
+ variants: "Fire" (x2)
+ 'source':
+ type: array
+ path: curse.source
+ is_null: false
+ values: 76
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: curse.source.[]
+ is_null: false
+ values: 76
+ different_values: 13
+ variants:
+ - "Gamemastery Guide" (x30)
+ - "GM Core" (x23)
+ - "Dark Archive" (x8)
+ - "Impossible Lands" (x6)
+ - "Pathfinder #170: Spoken on the Song Wind" (x1)
+ - "Crown of the Kobold King" (x1)
+ - "Kingmaker Adventure Path" (x1)
+ - "Kingmaker Companion Guide" (x1)
+ - "Pathfinder #187: The Seventh Arch" (x1)
+ - "Pathfinder #188: They Watched the Stars" (x1)
+ - "Pathfinder #189: Dreamers of the Nameless Spires" (x1)
+ - "Pathfinder #194: Cult of the Cave Worm" (x1)
+ - "Pathfinder #199: To Bloom Below the Web" (x1)
+ 'source_category':
+ type: array
+ path: curse.source_category
+ is_null: false
+ values: 76
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: curse.source_category.[]
+ is_null: false
+ values: 76
+ different_values: 4
+ variants:
+ - "Rulebooks" (x61)
+ - "Adventure Paths" (x8)
+ - "Lost Omens" (x6)
+ - "Adventures" (x1)
+ 'speed':
+ type: object
+ path: curse.speed
+ is_null: false
+ values: 76
+ schema:
+ 'summary_markdown':
+ type: string
+ path: curse.summary_markdown
+ is_null: false
+ values: 76
+ different_values: 60
+ variants: [omitted]
+ 'trait_markdown':
+ type: string
+ path: curse.trait_markdown
+ is_null: false
+ values: 76
+ different_values: 46
+ variants: [omitted]
+ 'type':
+ type: string
+ path: curse.type
+ is_null: false
+ values: 76
+ different_values: 1 (all same)
+ variants: "Curse" (x76)
+ 'url':
+ type: string
+ path: curse.url
+ is_null: false
+ values: 76
+ different_values: 76 (all different)
+ variants: [omitted]
+ 'weakness':
+ type: object
+ path: curse.weakness
+ is_null: false
+ values: 76
+ schema:
+ [legacy_id]:
+ type: array
+ path: curse.legacy_id
+ is_null: true
+ values: 23
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: curse.legacy_id.[]
+ is_null: false
+ values: 23
+ different_values: 23
+ variants: [omitted]
+ [level]:
+ type: integer
+ path: curse.level
+ is_null: true
+ values: 74
+ different_values: 18
+ variants:
+ - 5 (x10)
+ - 7 (x9)
+ - 11 (x6)
+ - 6 (x5)
+ - 9 (x5)
+ - 3 (x5)
+ - 1 (x5)
+ - 13 (x5)
+ - 10 (x5)
+ - 4 (x3)
+ - 2 (x3)
+ - 20 (x3)
+ - 12 (x2)
+ - 15 (x2)
+ - 18 (x2)
+ - 19 (x2)
+ - 8 (x1)
+ - 14 (x1)
+ [school]:
+ type: string
+ path: curse.school
+ is_null: true
+ values: 52
+ different_values: 7
+ variants:
+ - "necromancy" (x13)
+ - "enchantment" (x13)
+ - "transmutation" (x8)
+ - "evocation" (x5)
+ - "conjuration" (x5)
+ - "abjuration" (x4)
+ - "illusion" (x4)
+ 'markdown':
+ type: string
+ path: curse.markdown
+ is_null: false
+ values: 76
+ different_values: 76 (all different)
+ variants: [omitted]
+ 'name':
+ type: string
+ path: curse.name
+ is_null: false
+ values: 76
+ different_values: 57
+ variants: [omitted]
+ 'primary_source_category':
+ type: string
+ path: curse.primary_source_category
+ is_null: false
+ values: 76
+ different_values: 4
+ variants:
+ - "Rulebooks" (x61)
+ - "Adventure Paths" (x8)
+ - "Lost Omens" (x6)
+ - "Adventures" (x1)
+ 'rarity':
+ type: string
+ path: curse.rarity
+ is_null: false
+ values: 76
+ different_values: 3
+ variants:
+ - "common" (x43)
+ - "rare" (x30)
+ - "uncommon" (x3)
+ 'rarity_id':
+ type: integer
+ path: curse.rarity_id
+ is_null: false
+ values: 76
+ different_values: 3
+ variants:
+ - 1 (x43)
+ - 3 (x30)
+ - 2 (x3)
+ 'resistance':
+ type: object
+ path: curse.resistance
+ is_null: false
+ values: 76
+ schema:
+ 'search_markdown':
+ type: string
+ path: curse.search_markdown
+ is_null: false
+ values: 76
+ different_values: 76 (all different)
+ variants: [omitted]
+ [primary_source_group]:
+ type: string
+ path: curse.primary_source_group
+ is_null: true
+ values: 9
+ different_values: 6
+ variants:
+ - "Gatewalkers" (x3)
+ - "Kingmaker" (x2)
+ - "Strength of Thousands" (x1)
+ - "Crown of the Kobold King" (x1)
+ - "Sky King's Tomb" (x1)
+ - "Season of Ghosts" (x1)
+ 'release_date':
+ type: string
+ path: curse.release_date
+ is_null: false
+ values: 76
+ different_values: 11
+ variants:
+ - "2020-02-26" (x30)
+ - "2023-11-15" (x23)
+ - "2022-07-27" (x8)
+ - "2022-11-16" (x6)
+ - "2022-10-26" (x3)
+ - "2021-09-01" (x1)
+ - "2023-01-25" (x1)
+ - "2023-02-22" (x1)
+ - "2023-03-29" (x1)
+ - "2023-08-30" (x1)
+ - "2024-01-26" (x1)
+ [remaster_id]:
+ type: array
+ path: curse.remaster_id
+ is_null: true
+ values: 23
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: curse.remaster_id.[]
+ is_null: false
+ values: 23
+ different_values: 23
+ variants: [omitted]
+ [saving_throw_markdown]:
+ type: string
+ path: curse.saving_throw_markdown
+ is_null: true
+ values: 52
+ different_values: 27
+ variants: [omitted]
+ [source_group]:
+ type: array
+ path: curse.source_group
+ is_null: true
+ values: 9
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: curse.source_group.[]
+ is_null: false
+ values: 9
+ different_values: 6
+ variants:
+ - "Gatewalkers" (x3)
+ - "Kingmaker" (x2)
+ - "Strength of Thousands" (x1)
+ - "Crown of the Kobold King" (x1)
+ - "Sky King's Tomb" (x1)
+ - "Season of Ghosts" (x1)
+ 'source_markdown':
+ type: string
+ path: curse.source_markdown
+ is_null: false
+ values: 76
+ different_values: 19
+ variants:
+ - "[Gamemastery Guide](/Sources.aspx?ID=22) pg. 93" (x10)
+ - "[Gamemastery Guide](/Sources.aspx?ID=22) pg. 117" (x10)
+ - "[GM Core](/Sources.aspx?ID=218) pg. 87 2.0" (x10)
+ - "[GM Core](/Sources.aspx?ID=218) pg. 307 2.0" (x7)
+ - "[Gamemastery Guide](/Sources.aspx?ID=22) pg. 116" (x6)
+ - "[Impossible Lands](/Sources.aspx?ID=146) pg. 176" (x6)
+ - "[GM Core](/Sources.aspx?ID=218) pg. 86 2.0" (x6)
+ - "[Dark Archive](/Sources.aspx?ID=129) pg. 162" (x5)
+ - "[Gamemastery Guide](/Sources.aspx?ID=22) pg. 92" (x4)
+ - "[Dark Archive](/Sources.aspx?ID=129) pg. 163" (x3)
+ - "[Pathfinder #170: Spoken on the Song Wind](/Sources.aspx?ID=97) pg. 9" (x1)
+ - "[Crown of the Kobold King](/Sources.aspx?ID=148) pg. 96" (x1)
+ - "[Kingmaker Adventure Path](/Sources.aspx?ID=150) pg. 242" (x1)
+ - "[Kingmaker Companion Guide](/Sources.aspx?ID=151) pg. 73" (x1)
+ - "[Pathfinder #187: The Seventh Arch](/Sources.aspx?ID=192) pg. 79" (x1)
+ - "[Pathfinder #188: They Watched the Stars](/Sources.aspx?ID=194) pg. 11" (x1)
+ - "[Pathfinder #189: Dreamers of the Nameless Spires](/Sources.aspx?ID=195) pg. 76" (x1)
+ - "[Pathfinder #194: Cult of the Cave Worm](/Sources.aspx?ID=209) pg. 47" (x1)
+ - "[Pathfinder #199: To Bloom Below the Web](/Sources.aspx?ID=225) pg. 84" (x1)
+ [spoilers]:
+ type: string
+ path: curse.spoilers
+ is_null: true
+ values: 4
+ different_values: 3
+ variants:
+ - "Gatewalkers" (x2)
+ - "Strength of Thousands" (x1)
+ - "Season of Ghosts" (x1)
+ [trait]:
+ type: array
+ path: curse.trait
+ is_null: true
+ values: 75
+ min_count: 2
+ max_count: 6
+ value_type:
+ type: string
+ path: curse.trait.[]
+ is_null: false
+ values: 282
+ different_values: 30
+ variants: [omitted]
+ [usage_markdown]:
+ type: string
+ path: curse.usage_markdown
+ is_null: true
+ values: 22
+ different_values: 8
+ variants:
+ - "curses a weapon" (x7)
+ - "curses a ring, staff, or wand" (x5)
+ - "curses gear or a weapon" (x4)
+ - "curses a piercing or slashing weapon" (x2)
+ - "curses armor or shield" (x1)
+ - "curses gear used for skills or a weapon" (x1)
+ - "curses armor" (x1)
+ - "curses silver item" (x1)
diff --git a/output/aonprd/deity-category.yaml b/output/aonprd/deity-category.yaml
new file mode 100644
index 0000000..c1f038f
--- /dev/null
+++ b/output/aonprd/deity-category.yaml
@@ -0,0 +1,201 @@
+name: deity-category
+values: 34
+schema:
+ 'category':
+ type: string
+ path: deity-category.category
+ is_null: false
+ values: 34
+ different_values: 1 (all same)
+ variants: "deity-category" (x34)
+ 'deity':
+ type: array
+ path: deity-category.deity
+ is_null: false
+ values: 34
+ min_count: 2
+ max_count: 117
+ value_type:
+ type: string
+ path: deity-category.deity.[]
+ is_null: false
+ values: 673
+ different_values: 458
+ variants: [omitted]
+ 'deity_category':
+ type: string
+ path: deity-category.deity_category
+ is_null: false
+ values: 34
+ different_values: 34 (all different)
+ variants: [omitted]
+ 'deity_markdown':
+ type: string
+ path: deity-category.deity_markdown
+ is_null: false
+ values: 34
+ different_values: 34 (all different)
+ variants: [omitted]
+ 'id':
+ type: string
+ path: deity-category.id
+ is_null: false
+ values: 34
+ different_values: 34 (all different)
+ variants: [omitted]
+ 'markdown':
+ type: string
+ path: deity-category.markdown
+ is_null: false
+ values: 34
+ different_values: 34 (all different)
+ variants: [omitted]
+ 'name':
+ type: string
+ path: deity-category.name
+ is_null: false
+ values: 34
+ different_values: 34 (all different)
+ variants: [omitted]
+ 'primary_source_category':
+ type: string
+ path: deity-category.primary_source_category
+ is_null: false
+ values: 34
+ different_values: 3
+ variants:
+ - "Lost Omens" (x32)
+ - "Rulebooks" (x1)
+ - "Adventure Paths" (x1)
+ 'rarity':
+ type: string
+ path: deity-category.rarity
+ is_null: false
+ values: 34
+ different_values: 1 (all same)
+ variants: "common" (x34)
+ 'rarity_id':
+ type: integer
+ path: deity-category.rarity_id
+ is_null: false
+ values: 34
+ different_values: 1 (all same)
+ variants: 1 (x34)
+ 'release_date':
+ type: string
+ path: deity-category.release_date
+ is_null: false
+ values: 34
+ different_values: 6
+ variants:
+ - "2020-01-29" (x18)
+ - "2025-01-30" (x12)
+ - "2019-08-01" (x1)
+ - "2020-07-30" (x1)
+ - "2021-07-07" (x1)
+ - "2022-02-23" (x1)
+ 'resistance':
+ type: object
+ path: deity-category.resistance
+ is_null: false
+ values: 34
+ schema:
+ 'search_markdown':
+ type: string
+ path: deity-category.search_markdown
+ is_null: false
+ values: 34
+ different_values: 30
+ variants: [omitted]
+ 'source':
+ type: array
+ path: deity-category.source
+ is_null: false
+ values: 34
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: deity-category.source.[]
+ is_null: false
+ values: 34
+ different_values: 7
+ variants:
+ - "Gods & Magic" (x18)
+ - "Divine Mysteries Web Supplement" (x7)
+ - "Divine Mysteries" (x5)
+ - "Core Rulebook" (x1)
+ - "Legends" (x1)
+ - "The Mwangi Expanse" (x1)
+ - "Pathfinder #176: Lost Mammoth Valley" (x1)
+ 'source_category':
+ type: array
+ path: deity-category.source_category
+ is_null: false
+ values: 34
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: deity-category.source_category.[]
+ is_null: false
+ values: 34
+ different_values: 3
+ variants:
+ - "Lost Omens" (x32)
+ - "Rulebooks" (x1)
+ - "Adventure Paths" (x1)
+ 'source_markdown':
+ type: string
+ path: deity-category.source_markdown
+ is_null: false
+ values: 34
+ different_values: 30
+ variants: [omitted]
+ 'speed':
+ type: object
+ path: deity-category.speed
+ is_null: false
+ values: 34
+ schema:
+ 'type':
+ type: string
+ path: deity-category.type
+ is_null: false
+ values: 34
+ different_values: 1 (all same)
+ variants: "Deity Category" (x34)
+ 'url':
+ type: string
+ path: deity-category.url
+ is_null: false
+ values: 34
+ different_values: 34 (all different)
+ variants: [omitted]
+ 'weakness':
+ type: object
+ path: deity-category.weakness
+ is_null: false
+ values: 34
+ schema:
+ [primary_source_group]:
+ type: string
+ path: deity-category.primary_source_group
+ is_null: true
+ values: 1
+ different_values: 1 (all same)
+ variants: "Quest for the Frozen Flame" (x1)
+ [source_group]:
+ type: array
+ path: deity-category.source_group
+ is_null: true
+ values: 1
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: deity-category.source_group.[]
+ is_null: false
+ values: 1
+ different_values: 1 (all same)
+ variants: "Quest for the Frozen Flame" (x1)
diff --git a/output/aonprd/deity.yaml b/output/aonprd/deity.yaml
new file mode 100644
index 0000000..adbc3ae
--- /dev/null
+++ b/output/aonprd/deity.yaml
@@ -0,0 +1,509 @@
+name: deity
+values: 673
+schema:
+ 'anathema':
+ type: string
+ path: deity.anathema
+ is_null: false
+ values: 673
+ different_values: 530
+ variants: [omitted]
+ [attribute]:
+ type: array
+ path: deity.attribute
+ is_null: true
+ values: 654
+ min_count: 2
+ max_count: 2
+ value_type:
+ type: string
+ path: deity.attribute.[]
+ is_null: false
+ values: 1308
+ different_values: 6
+ variants:
+ - "Wisdom" (x303)
+ - "Constitution" (x257)
+ - "Charisma" (x222)
+ - "Intelligence" (x204)
+ - "Strength" (x183)
+ - "Dexterity" (x139)
+ 'category':
+ type: string
+ path: deity.category
+ is_null: false
+ values: 673
+ different_values: 1 (all same)
+ variants: "deity" (x673)
+ 'deity':
+ type: array
+ path: deity.deity
+ is_null: false
+ values: 673
+ min_count: 1
+ max_count: 12
+ value_type:
+ type: string
+ path: deity.deity.[]
+ is_null: false
+ values: 1027
+ different_values: 458
+ variants: [omitted]
+ 'deity_category':
+ type: string
+ path: deity.deity_category
+ is_null: false
+ values: 673
+ different_values: 34
+ variants: [omitted]
+ [alignment]:
+ type: string
+ path: deity.alignment
+ is_null: true
+ values: 254
+ different_values: 10
+ variants:
+ - "NG" (x41)
+ - "N" (x37)
+ - "CE" (x32)
+ - "LG" (x28)
+ - "LN" (x27)
+ - "CN" (x24)
+ - "CG" (x24)
+ - "LE" (x22)
+ - "NE" (x17)
+ - "Any" (x2)
+ [deity_markdown]:
+ type: string
+ path: deity.deity_markdown
+ is_null: true
+ values: 177
+ different_values: 103
+ variants: [omitted]
+ 'domain_alternate_markdown':
+ type: string
+ path: deity.domain_alternate_markdown
+ is_null: false
+ values: 673
+ different_values: 306
+ variants: [omitted]
+ 'domain_markdown':
+ type: string
+ path: deity.domain_markdown
+ is_null: false
+ values: 673
+ different_values: 649
+ variants: [omitted]
+ 'domain_primary_markdown':
+ type: string
+ path: deity.domain_primary_markdown
+ is_null: false
+ values: 673
+ different_values: 642
+ variants: [omitted]
+ 'edict':
+ type: string
+ path: deity.edict
+ is_null: false
+ values: 673
+ different_values: 531
+ variants: [omitted]
+ 'favored_weapon_markdown':
+ type: string
+ path: deity.favored_weapon_markdown
+ is_null: false
+ values: 673
+ different_values: 188
+ variants: [omitted]
+ 'id':
+ type: string
+ path: deity.id
+ is_null: false
+ values: 673
+ different_values: 673 (all different)
+ variants: [omitted]
+ [follower_alignment]:
+ type: array
+ path: deity.follower_alignment
+ is_null: true
+ values: 260
+ min_count: 1
+ max_count: 9
+ value_type:
+ type: string
+ path: deity.follower_alignment.[]
+ is_null: false
+ values: 772
+ different_values: 9
+ variants:
+ - "NG" (x127)
+ - "LG" (x100)
+ - "N" (x100)
+ - "CG" (x94)
+ - "LN" (x84)
+ - "CE" (x71)
+ - "NE" (x71)
+ - "CN" (x68)
+ - "LE" (x57)
+ [icon_image]:
+ type: string
+ path: deity.icon_image
+ is_null: true
+ values: 85
+ different_values: 64
+ variants: [omitted]
+ [legacy_id]:
+ type: array
+ path: deity.legacy_id
+ is_null: true
+ values: 218
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: deity.legacy_id.[]
+ is_null: false
+ values: 218
+ different_values: 217
+ variants: [omitted]
+ 'markdown':
+ type: string
+ path: deity.markdown
+ is_null: false
+ values: 673
+ different_values: 673 (all different)
+ variants: [omitted]
+ 'name':
+ type: string
+ path: deity.name
+ is_null: false
+ values: 673
+ different_values: 482
+ variants: [omitted]
+ 'summary_markdown':
+ type: string
+ path: deity.summary_markdown
+ is_null: false
+ values: 673
+ different_values: 450
+ variants: [omitted]
+ [area_of_concern_raw]:
+ type: string
+ path: deity.area_of_concern_raw
+ is_null: true
+ values: 586
+ different_values: 546
+ variants: [omitted]
+ [divine_font]:
+ type: array
+ path: deity.divine_font
+ is_null: true
+ values: 660
+ min_count: 1
+ max_count: 2
+ value_type:
+ type: string
+ path: deity.divine_font.[]
+ is_null: false
+ values: 837
+ different_values: 2
+ variants:
+ - "Heal" (x436)
+ - "Harm" (x401)
+ [domain]:
+ type: array
+ path: deity.domain
+ is_null: true
+ values: 660
+ min_count: 4
+ max_count: 24
+ value_type:
+ type: string
+ path: deity.domain.[]
+ is_null: false
+ values: 3516
+ different_values: 64
+ variants: [omitted]
+ [pantheon]:
+ type: array
+ path: deity.pantheon
+ is_null: true
+ values: 142
+ min_count: 1
+ max_count: 9
+ value_type:
+ type: string
+ path: deity.pantheon.[]
+ is_null: false
+ values: 235
+ different_values: 39
+ variants: [omitted]
+ [pantheon_markdown]:
+ type: string
+ path: deity.pantheon_markdown
+ is_null: true
+ values: 142
+ different_values: 70
+ variants: [omitted]
+ 'type':
+ type: string
+ path: deity.type
+ is_null: false
+ values: 673
+ different_values: 1 (all same)
+ variants: "Deity" (x673)
+ 'url':
+ type: string
+ path: deity.url
+ is_null: false
+ values: 673
+ different_values: 673 (all different)
+ variants: [omitted]
+ 'weakness':
+ type: object
+ path: deity.weakness
+ is_null: false
+ values: 673
+ schema:
+ [image]:
+ type: array
+ path: deity.image
+ is_null: true
+ values: 85
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: deity.image.[]
+ is_null: false
+ values: 85
+ different_values: 64
+ variants: [omitted]
+ 'spell_markdown':
+ type: string
+ path: deity.spell_markdown
+ is_null: false
+ values: 673
+ different_values: 649
+ variants: [omitted]
+ [pantheon_member_markdown]:
+ type: string
+ path: deity.pantheon_member_markdown
+ is_null: true
+ values: 35
+ different_values: 33
+ variants: [omitted]
+ 'release_date':
+ type: string
+ path: deity.release_date
+ is_null: false
+ values: 673
+ different_values: 20
+ variants:
+ - "2025-01-30" (x415)
+ - "2020-01-29" (x159)
+ - "2019-08-01" (x24)
+ - "2023-03-29" (x11)
+ - "2021-07-07" (x9)
+ - "2022-05-25" (x8)
+ - "2022-11-16" (x8)
+ - "2022-08-31" (x8)
+ - "2022-02-23" (x5)
+ - "2023-06-28" (x4)
+ - "2021-07-16" (x4)
+ - "2020-01-21" (x3)
+ - "2020-07-30" (x3)
+ - "2021-04-07" (x3)
+ - "2020-05-27" (x2)
+ - "2021-10-13" (x2)
+ - "2022-04-27" (x2)
+ - "2019-10-16" (x1)
+ - "2020-06-25" (x1)
+ - "2024-03-27" (x1)
+ [pfs]:
+ type: string
+ path: deity.pfs
+ is_null: true
+ values: 670
+ different_values: 3
+ variants:
+ - "Standard" (x439)
+ - "Restricted" (x223)
+ - "Limited" (x8)
+ 'primary_source_category':
+ type: string
+ path: deity.primary_source_category
+ is_null: false
+ values: 673
+ different_values: 5
+ variants:
+ - "Lost Omens" (x623)
+ - "Rulebooks" (x32)
+ - "Adventure Paths" (x8)
+ - "Blog Posts" (x8)
+ - "Adventures" (x2)
+ [primary_source_group]:
+ type: string
+ path: deity.primary_source_group
+ is_null: true
+ values: 10
+ different_values: 6
+ variants:
+ - "Quest for the Frozen Flame" (x5)
+ - "Age of Ashes" (x1)
+ - "Gatewalkers" (x1)
+ - "Night of the Gray Death" (x1)
+ - "Strength of Thousands" (x1)
+ - "Shadows at Sundown" (x1)
+ 'rarity':
+ type: string
+ path: deity.rarity
+ is_null: false
+ values: 673
+ different_values: 1 (all same)
+ variants: "common" (x673)
+ 'rarity_id':
+ type: integer
+ path: deity.rarity_id
+ is_null: false
+ values: 673
+ different_values: 1 (all same)
+ variants: 1 (x673)
+ [remaster_id]:
+ type: array
+ path: deity.remaster_id
+ is_null: true
+ values: 217
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: deity.remaster_id.[]
+ is_null: false
+ values: 217
+ different_values: 217
+ variants: [omitted]
+ 'resistance':
+ type: object
+ path: deity.resistance
+ is_null: false
+ values: 673
+ schema:
+ [religious_symbol]:
+ type: string
+ path: deity.religious_symbol
+ is_null: true
+ values: 396
+ different_values: 394
+ variants: [omitted]
+ [sacred_animal]:
+ type: string
+ path: deity.sacred_animal
+ is_null: true
+ values: 365
+ different_values: 228
+ variants: [omitted]
+ 'search_markdown':
+ type: string
+ path: deity.search_markdown
+ is_null: false
+ values: 673
+ different_values: 671
+ variants: [omitted]
+ 'skill_markdown':
+ type: string
+ path: deity.skill_markdown
+ is_null: false
+ values: 673
+ different_values: 34
+ variants: [omitted]
+ 'source':
+ type: array
+ path: deity.source
+ is_null: false
+ values: 673
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: deity.source.[]
+ is_null: false
+ values: 673
+ different_values: 25
+ variants: [omitted]
+ 'source_category':
+ type: array
+ path: deity.source_category
+ is_null: false
+ values: 673
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: deity.source_category.[]
+ is_null: false
+ values: 673
+ different_values: 5
+ variants:
+ - "Lost Omens" (x623)
+ - "Rulebooks" (x32)
+ - "Adventure Paths" (x8)
+ - "Blog Posts" (x8)
+ - "Adventures" (x2)
+ [source_group]:
+ type: array
+ path: deity.source_group
+ is_null: true
+ values: 10
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: deity.source_group.[]
+ is_null: false
+ values: 10
+ different_values: 6
+ variants:
+ - "Quest for the Frozen Flame" (x5)
+ - "Age of Ashes" (x1)
+ - "Gatewalkers" (x1)
+ - "Night of the Gray Death" (x1)
+ - "Strength of Thousands" (x1)
+ - "Shadows at Sundown" (x1)
+ 'source_markdown':
+ type: string
+ path: deity.source_markdown
+ is_null: false
+ values: 673
+ different_values: 203
+ variants: [omitted]
+ 'speed':
+ type: object
+ path: deity.speed
+ is_null: false
+ values: 673
+ schema:
+ [trait]:
+ type: array
+ path: deity.trait
+ is_null: true
+ values: 254
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: deity.trait.[]
+ is_null: false
+ values: 254
+ different_values: 10
+ variants:
+ - "NG" (x41)
+ - "N" (x37)
+ - "CE" (x32)
+ - "LG" (x28)
+ - "LN" (x27)
+ - "CN" (x24)
+ - "CG" (x24)
+ - "LE" (x22)
+ - "NE" (x17)
+ - "Any" (x2)
diff --git a/output/aonprd/deviant-ability-classification.yaml b/output/aonprd/deviant-ability-classification.yaml
new file mode 100644
index 0000000..d47b258
--- /dev/null
+++ b/output/aonprd/deviant-ability-classification.yaml
@@ -0,0 +1,152 @@
+name: deviant-ability-classification
+values: 3
+schema:
+ 'category':
+ type: string
+ path: deviant-ability-classification.category
+ is_null: false
+ values: 3
+ different_values: 1 (all same)
+ variants: "deviant-ability-classification" (x3)
+ 'id':
+ type: string
+ path: deviant-ability-classification.id
+ is_null: false
+ values: 3
+ different_values: 3 (all different)
+ variants:
+ - "deviant-ability-classification-1" (x1)
+ - "deviant-ability-classification-2" (x1)
+ - "deviant-ability-classification-3" (x1)
+ 'markdown':
+ type: string
+ path: deviant-ability-classification.markdown
+ is_null: false
+ values: 3
+ different_values: 3 (all different)
+ variants: [omitted]
+ 'name':
+ type: string
+ path: deviant-ability-classification.name
+ is_null: false
+ values: 3
+ different_values: 3 (all different)
+ variants:
+ - "Dragon" (x1)
+ - "Troll" (x1)
+ - "Wraith" (x1)
+ 'pfs':
+ type: string
+ path: deviant-ability-classification.pfs
+ is_null: false
+ values: 3
+ different_values: 1 (all same)
+ variants: "Standard" (x3)
+ 'primary_source_category':
+ type: string
+ path: deviant-ability-classification.primary_source_category
+ is_null: false
+ values: 3
+ different_values: 1 (all same)
+ variants: "Rulebooks" (x3)
+ 'rarity':
+ type: string
+ path: deviant-ability-classification.rarity
+ is_null: false
+ values: 3
+ different_values: 1 (all same)
+ variants: "common" (x3)
+ 'rarity_id':
+ type: integer
+ path: deviant-ability-classification.rarity_id
+ is_null: false
+ values: 3
+ different_values: 1 (all same)
+ variants: 1 (x3)
+ 'release_date':
+ type: string
+ path: deviant-ability-classification.release_date
+ is_null: false
+ values: 3
+ different_values: 1 (all same)
+ variants: "2022-07-27" (x3)
+ 'resistance':
+ type: object
+ path: deviant-ability-classification.resistance
+ is_null: false
+ values: 3
+ schema:
+ 'search_markdown':
+ type: string
+ path: deviant-ability-classification.search_markdown
+ is_null: false
+ values: 3
+ different_values: 3 (all different)
+ variants: [omitted]
+ 'source':
+ type: array
+ path: deviant-ability-classification.source
+ is_null: false
+ values: 3
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: deviant-ability-classification.source.[]
+ is_null: false
+ values: 3
+ different_values: 1 (all same)
+ variants: "Dark Archive" (x3)
+ 'source_category':
+ type: array
+ path: deviant-ability-classification.source_category
+ is_null: false
+ values: 3
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: deviant-ability-classification.source_category.[]
+ is_null: false
+ values: 3
+ different_values: 1 (all same)
+ variants: "Rulebooks" (x3)
+ 'source_markdown':
+ type: string
+ path: deviant-ability-classification.source_markdown
+ is_null: false
+ values: 3
+ different_values: 3 (all different)
+ variants:
+ - "[Dark Archive](/Sources.aspx?ID=129) pg. 100" (x1)
+ - "[Dark Archive](/Sources.aspx?ID=129) pg. 101" (x1)
+ - "[Dark Archive](/Sources.aspx?ID=129) pg. 102" (x1)
+ 'speed':
+ type: object
+ path: deviant-ability-classification.speed
+ is_null: false
+ values: 3
+ schema:
+ 'type':
+ type: string
+ path: deviant-ability-classification.type
+ is_null: false
+ values: 3
+ different_values: 1 (all same)
+ variants: "Deviant Ability Classification" (x3)
+ 'url':
+ type: string
+ path: deviant-ability-classification.url
+ is_null: false
+ values: 3
+ different_values: 3 (all different)
+ variants:
+ - "/DeviantFeats.aspx?ID=1" (x1)
+ - "/DeviantFeats.aspx?ID=2" (x1)
+ - "/DeviantFeats.aspx?ID=3" (x1)
+ 'weakness':
+ type: object
+ path: deviant-ability-classification.weakness
+ is_null: false
+ values: 3
+ schema:
diff --git a/output/aonprd/disease.yaml b/output/aonprd/disease.yaml
new file mode 100644
index 0000000..7cdd553
--- /dev/null
+++ b/output/aonprd/disease.yaml
@@ -0,0 +1,340 @@
+name: disease
+values: 39
+schema:
+ 'category':
+ type: string
+ path: disease.category
+ is_null: false
+ values: 39
+ different_values: 1 (all same)
+ variants: "disease" (x39)
+ 'id':
+ type: string
+ path: disease.id
+ is_null: false
+ values: 39
+ different_values: 39 (all different)
+ variants: [omitted]
+ 'markdown':
+ type: string
+ path: disease.markdown
+ is_null: false
+ values: 39
+ different_values: 39 (all different)
+ variants: [omitted]
+ 'name':
+ type: string
+ path: disease.name
+ is_null: false
+ values: 39
+ different_values: 24
+ variants: [omitted]
+ 'primary_source_category':
+ type: string
+ path: disease.primary_source_category
+ is_null: false
+ values: 39
+ different_values: 4
+ variants:
+ - "Rulebooks" (x35)
+ - "Adventure Paths" (x2)
+ - "Lost Omens" (x1)
+ - "Adventures" (x1)
+ [primary_source_group]:
+ type: string
+ path: disease.primary_source_group
+ is_null: true
+ values: 3
+ different_values: 3
+ variants:
+ - "Extinction Curse" (x1)
+ - "Strength of Thousands" (x1)
+ - "Rusthenge" (x1)
+ 'rarity':
+ type: string
+ path: disease.rarity
+ is_null: false
+ values: 39
+ different_values: 4
+ variants:
+ - "common" (x35)
+ - "uncommon" (x2)
+ - "unique" (x1)
+ - "rare" (x1)
+ 'rarity_id':
+ type: integer
+ path: disease.rarity_id
+ is_null: false
+ values: 39
+ different_values: 4
+ variants:
+ - 1 (x35)
+ - 2 (x2)
+ - 4 (x1)
+ - 3 (x1)
+ 'release_date':
+ type: string
+ path: disease.release_date
+ is_null: false
+ values: 39
+ different_values: 7
+ variants:
+ - "2020-02-26" (x15)
+ - "2023-11-15" (x14)
+ - "2020-05-27" (x6)
+ - "2021-09-01" (x1)
+ - "2021-12-22" (x1)
+ - "2023-02-22" (x1)
+ - "2023-10-18" (x1)
+ 'resistance':
+ type: object
+ path: disease.resistance
+ is_null: false
+ values: 39
+ schema:
+ 'saving_throw_markdown':
+ type: string
+ path: disease.saving_throw_markdown
+ is_null: false
+ values: 39
+ different_values: 17
+ variants:
+ - "DC 13 Fortitude" (x4)
+ - "DC 23 Fortitude" (x4)
+ - "DC 15 Fortitude" (x3)
+ - "DC 16 Fortitude" (x3)
+ - "DC 17 Fortitude" (x3)
+ - "DC 22 Fortitude" (x3)
+ - "DC 28 Fortitude" (x3)
+ - "DC 14 Fortitude" (x2)
+ - "DC 19 Fortitude" (x2)
+ - "DC 20 Fortitude" (x2)
+ - "DC 25 Will" (x2)
+ - "DC 34 Fortitude" (x2)
+ - "DC 32 Fortitude" (x2)
+ - "Fortitude (DC equals that of the drug)" (x1)
+ - "DC 29 Fortitude" (x1)
+ - "DC 18 Fortitude" (x1)
+ - "Fortitude; creatures with addictive exhaustion can't reduce their [sickened](/Conditions.aspx?ID=34) condition from addictive exhaustion while they have the disease" (x1)
+ [school]:
+ type: string
+ path: disease.school
+ is_null: true
+ values: 3
+ different_values: 2
+ variants:
+ - "necromancy" (x2)
+ - "transmutation" (x1)
+ 'search_markdown':
+ type: string
+ path: disease.search_markdown
+ is_null: false
+ values: 39
+ different_values: 39 (all different)
+ variants: [omitted]
+ 'source':
+ type: array
+ path: disease.source
+ is_null: false
+ values: 39
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: disease.source.[]
+ is_null: false
+ values: 39
+ different_values: 8
+ variants:
+ - "Gamemastery Guide" (x15)
+ - "GM Core" (x14)
+ - "Bestiary 2" (x5)
+ - "Pathfinder #155: Lord of the Black Sands" (x1)
+ - "Pathfinder #170: Spoken on the Song Wind" (x1)
+ - "Monsters of Myth" (x1)
+ - "Treasure Vault" (x1)
+ - "Rusthenge" (x1)
+ 'source_category':
+ type: array
+ path: disease.source_category
+ is_null: false
+ values: 39
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: disease.source_category.[]
+ is_null: false
+ values: 39
+ different_values: 4
+ variants:
+ - "Rulebooks" (x35)
+ - "Adventure Paths" (x2)
+ - "Lost Omens" (x1)
+ - "Adventures" (x1)
+ 'source_markdown':
+ type: string
+ path: disease.source_markdown
+ is_null: false
+ values: 39
+ different_values: 15
+ variants:
+ - "[Gamemastery Guide](/Sources.aspx?ID=22) pg. 118" (x9)
+ - "[GM Core](/Sources.aspx?ID=218) pg. 88 2.0" (x9)
+ - "[Gamemastery Guide](/Sources.aspx?ID=22) pg. 119" (x5)
+ - "[GM Core](/Sources.aspx?ID=218) pg. 89 2.0" (x5)
+ - "[Gamemastery Guide](/Sources.aspx?ID=22) pg. 120" (x1)
+ - "[Bestiary 2](/Sources.aspx?ID=32) pg. 13 2.0" (x1)
+ - "[Bestiary 2](/Sources.aspx?ID=32) pg. 59 2.0" (x1)
+ - "[Bestiary 2](/Sources.aspx?ID=32) pg. 72 2.0" (x1)
+ - "[Bestiary 2](/Sources.aspx?ID=32) pg. 119 2.0" (x1)
+ - "[Bestiary 2](/Sources.aspx?ID=32) pg. 120 2.0" (x1)
+ - "[Pathfinder #155: Lord of the Black Sands](/Sources.aspx?ID=33) pg. 73" (x1)
+ - "[Pathfinder #170: Spoken on the Song Wind](/Sources.aspx?ID=97) pg. 47" (x1)
+ - "[Monsters of Myth](/Sources.aspx?ID=107) pg. 65" (x1)
+ - "[Treasure Vault](/Sources.aspx?ID=191) pg. 45 1.1" (x1)
+ - "[Rusthenge](/Sources.aspx?ID=215) pg. 19" (x1)
+ 'speed':
+ type: object
+ path: disease.speed
+ is_null: false
+ values: 39
+ schema:
+ 'stage_markdown':
+ type: string
+ path: disease.stage_markdown
+ is_null: false
+ values: 39
+ different_values: 39 (all different)
+ variants: [omitted]
+ 'summary_markdown':
+ type: string
+ path: disease.summary_markdown
+ is_null: false
+ values: 39
+ different_values: 27
+ variants: [omitted]
+ [trait]:
+ type: array
+ path: disease.trait
+ is_null: true
+ values: 32
+ min_count: 1
+ max_count: 4
+ value_type:
+ type: string
+ path: disease.trait.[]
+ is_null: false
+ values: 53
+ different_values: 10
+ variants:
+ - "Disease" (x32)
+ - "Virulent" (x9)
+ - "Necromancy" (x2)
+ - "Primal" (x2)
+ - "Occult" (x2)
+ - "Uncommon" (x2)
+ - "Unique" (x1)
+ - "Divine" (x1)
+ - "Rare" (x1)
+ - "Transmutation" (x1)
+ 'trait_markdown':
+ type: string
+ path: disease.trait_markdown
+ is_null: false
+ values: 39
+ different_values: 13
+ variants:
+ - "[Disease](/Traits.aspx?ID=46)" (x8)
+ - "[Disease](/Traits.aspx?ID=578)" (x8)
+ - "" (x7)
+ - "[Disease](/Traits.aspx?ID=46), [Virulent](/Traits.aspx?ID=162)" (x4)
+ - "[Disease](/Traits.aspx?ID=578), [Virulent](/Traits.aspx?ID=726)" (x4)
+ - "[Disease](/Traits.aspx?ID=46), [Necromancy](/Traits.aspx?ID=117), [Primal](/Traits.aspx?ID=134)" (x1)
+ - "[Disease](/Traits.aspx?ID=46), [Necromancy](/Traits.aspx?ID=117), [Occult](/Traits.aspx?ID=120)" (x1)
+ - "[Disease](/Traits.aspx?ID=46), [Uncommon](/Traits.aspx?ID=159)" (x1)
+ - "[Disease](/Traits.aspx?ID=46), [Uncommon](/Traits.aspx?ID=159), [Virulent](/Traits.aspx?ID=162)" (x1)
+ - "[Disease](/Traits.aspx?ID=46), [Unique](/Traits.aspx?ID=161)" (x1)
+ - "[Disease](/Traits.aspx?ID=46), [Divine](/Traits.aspx?ID=48), [Rare](/Traits.aspx?ID=137), [Transmutation](/Traits.aspx?ID=157)" (x1)
+ - "[Disease](/Traits.aspx?ID=578), [Primal](/Traits.aspx?ID=676)" (x1)
+ - "[Disease](/Traits.aspx?ID=578), [Occult](/Traits.aspx?ID=662)" (x1)
+ 'type':
+ type: string
+ path: disease.type
+ is_null: false
+ values: 39
+ different_values: 1 (all same)
+ variants: "Disease" (x39)
+ 'url':
+ type: string
+ path: disease.url
+ is_null: false
+ values: 39
+ different_values: 39 (all different)
+ variants: [omitted]
+ 'weakness':
+ type: object
+ path: disease.weakness
+ is_null: false
+ values: 39
+ schema:
+ [level]:
+ type: integer
+ path: disease.level
+ is_null: true
+ values: 38
+ different_values: 12
+ variants:
+ - 1 (x8)
+ - 15 (x5)
+ - 7 (x4)
+ - 2 (x3)
+ - 3 (x3)
+ - 6 (x3)
+ - 11 (x3)
+ - 0 (x2)
+ - 4 (x2)
+ - 5 (x2)
+ - 8 (x2)
+ - 10 (x1)
+ [onset_raw]:
+ type: string
+ path: disease.onset_raw
+ is_null: true
+ values: 28
+ different_values: 7
+ variants:
+ - "1 day" (x14)
+ - "10 days" (x4)
+ - "2 days" (x3)
+ - "1d4 days" (x3)
+ - "1 week" (x2)
+ - "1 hour" (x1)
+ - "3 days" (x1)
+ [source_group]:
+ type: array
+ path: disease.source_group
+ is_null: true
+ values: 3
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: disease.source_group.[]
+ is_null: false
+ values: 3
+ different_values: 3
+ variants:
+ - "Extinction Curse" (x1)
+ - "Strength of Thousands" (x1)
+ - "Rusthenge" (x1)
+ [spoilers]:
+ type: string
+ path: disease.spoilers
+ is_null: true
+ values: 3
+ different_values: 3
+ variants:
+ - "Extinction Curse" (x1)
+ - "Strength of Thousands" (x1)
+ - "Rusthenge" (x1)
diff --git a/output/aonprd/doctrine.yaml b/output/aonprd/doctrine.yaml
new file mode 100644
index 0000000..a6b47f0
--- /dev/null
+++ b/output/aonprd/doctrine.yaml
@@ -0,0 +1,209 @@
+name: doctrine
+values: 5
+schema:
+ 'category':
+ type: string
+ path: doctrine.category
+ is_null: false
+ values: 5
+ different_values: 1 (all same)
+ variants: "doctrine" (x5)
+ 'id':
+ type: string
+ path: doctrine.id
+ is_null: false
+ values: 5
+ different_values: 5 (all different)
+ variants:
+ - "doctrine-2" (x1)
+ - "doctrine-3" (x1)
+ - "doctrine-4" (x1)
+ - "doctrine-5" (x1)
+ - "doctrine-6" (x1)
+ 'search_markdown':
+ type: string
+ path: doctrine.search_markdown
+ is_null: false
+ values: 5
+ different_values: 5 (all different)
+ variants: [omitted]
+ 'source':
+ type: array
+ path: doctrine.source
+ is_null: false
+ values: 5
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: doctrine.source.[]
+ is_null: false
+ values: 5
+ different_values: 3
+ variants:
+ - "Core Rulebook" (x2)
+ - "Player Core" (x2)
+ - "Divine Mysteries" (x1)
+ 'source_category':
+ type: array
+ path: doctrine.source_category
+ is_null: false
+ values: 5
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: doctrine.source_category.[]
+ is_null: false
+ values: 5
+ different_values: 2
+ variants:
+ - "Rulebooks" (x4)
+ - "Lost Omens" (x1)
+ 'source_markdown':
+ type: string
+ path: doctrine.source_markdown
+ is_null: false
+ values: 5
+ different_values: 4
+ variants:
+ - "[Player Core](/Sources.aspx?ID=216) pg. 112 2.0" (x2)
+ - "[Core Rulebook](/Sources.aspx?ID=1) pg. 119 4.0" (x1)
+ - "[Core Rulebook](/Sources.aspx?ID=1) pg. 120 4.0" (x1)
+ - "[Divine Mysteries](/Sources.aspx?ID=234) pg. 272" (x1)
+ 'speed':
+ type: object
+ path: doctrine.speed
+ is_null: false
+ values: 5
+ schema:
+ 'summary_markdown':
+ type: string
+ path: doctrine.summary_markdown
+ is_null: false
+ values: 5
+ different_values: 3
+ variants:
+ - "You are a cleric of the cloth, focusing on divine magic and your connection to your deity’s domains ." (x2)
+ - "You have trained in the more militant doctrine of your church, focusing on both spells and battle." (x2)
+ - "The doctrine can be selected by battle harbingers . You've undergone a special training to focus your body toward combat. While you still adhere to …" (x1)
+ 'type':
+ type: string
+ path: doctrine.type
+ is_null: false
+ values: 5
+ different_values: 1 (all same)
+ variants: "Cleric Doctrine" (x5)
+ 'url':
+ type: string
+ path: doctrine.url
+ is_null: false
+ values: 5
+ different_values: 5 (all different)
+ variants:
+ - "/Doctrines.aspx?ID=2" (x1)
+ - "/Doctrines.aspx?ID=3" (x1)
+ - "/Doctrines.aspx?ID=4" (x1)
+ - "/Doctrines.aspx?ID=5" (x1)
+ - "/Doctrines.aspx?ID=6" (x1)
+ [legacy_id]:
+ type: array
+ path: doctrine.legacy_id
+ is_null: true
+ values: 2
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: doctrine.legacy_id.[]
+ is_null: false
+ values: 2
+ different_values: 2
+ variants:
+ - "doctrine-2" (x1)
+ - "doctrine-3" (x1)
+ 'markdown':
+ type: string
+ path: doctrine.markdown
+ is_null: false
+ values: 5
+ different_values: 5 (all different)
+ variants: [omitted]
+ 'name':
+ type: string
+ path: doctrine.name
+ is_null: false
+ values: 5
+ different_values: 3
+ variants:
+ - "Cloistered Cleric" (x2)
+ - "Warpriest" (x2)
+ - "Battle Creed" (x1)
+ 'pfs':
+ type: string
+ path: doctrine.pfs
+ is_null: false
+ values: 5
+ different_values: 1 (all same)
+ variants: "Standard" (x5)
+ 'primary_source_category':
+ type: string
+ path: doctrine.primary_source_category
+ is_null: false
+ values: 5
+ different_values: 2
+ variants:
+ - "Rulebooks" (x4)
+ - "Lost Omens" (x1)
+ 'rarity':
+ type: string
+ path: doctrine.rarity
+ is_null: false
+ values: 5
+ different_values: 1 (all same)
+ variants: "common" (x5)
+ 'rarity_id':
+ type: integer
+ path: doctrine.rarity_id
+ is_null: false
+ values: 5
+ different_values: 1 (all same)
+ variants: 1 (x5)
+ 'release_date':
+ type: string
+ path: doctrine.release_date
+ is_null: false
+ values: 5
+ different_values: 3
+ variants:
+ - "2019-08-01" (x2)
+ - "2023-11-15" (x2)
+ - "2025-01-30" (x1)
+ [remaster_id]:
+ type: array
+ path: doctrine.remaster_id
+ is_null: true
+ values: 2
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: doctrine.remaster_id.[]
+ is_null: false
+ values: 2
+ different_values: 2
+ variants:
+ - "doctrine-4" (x1)
+ - "doctrine-5" (x1)
+ 'resistance':
+ type: object
+ path: doctrine.resistance
+ is_null: false
+ values: 5
+ schema:
+ 'weakness':
+ type: object
+ path: doctrine.weakness
+ is_null: false
+ values: 5
+ schema:
diff --git a/output/aonprd/domain.yaml b/output/aonprd/domain.yaml
new file mode 100644
index 0000000..3d72443
--- /dev/null
+++ b/output/aonprd/domain.yaml
@@ -0,0 +1,314 @@
+name: domain
+values: 124
+schema:
+ 'advanced_domain_spell_markdown':
+ type: string
+ path: domain.advanced_domain_spell_markdown
+ is_null: false
+ values: 124
+ different_values: 124 (all different)
+ variants: [omitted]
+ [advanced_apocryphal_spell_markdown]:
+ type: string
+ path: domain.advanced_apocryphal_spell_markdown
+ is_null: true
+ values: 16
+ different_values: 8
+ variants:
+ - "[Wind Whispers](/Spells.aspx?ID=1178)" (x2)
+ - "[Shaken Confidence](/Spells.aspx?ID=1174)" (x2)
+ - "[Isolation](/Spells.aspx?ID=1171)" (x2)
+ - "[Euphoric Renewal](/Spells.aspx?ID=1168)" (x2)
+ - "[Wordsmith](/Spells.aspx?ID=1179)" (x2)
+ - "[Weaponize Secret](/Spells.aspx?ID=1177)" (x2)
+ - "[Inevitable Destination](/Spells.aspx?ID=1172)" (x2)
+ - "[Purifying Veil](/Spells.aspx?ID=1173)" (x2)
+ 'category':
+ type: string
+ path: domain.category
+ is_null: false
+ values: 124
+ different_values: 1 (all same)
+ variants: "domain" (x124)
+ 'deity_markdown':
+ type: string
+ path: domain.deity_markdown
+ is_null: false
+ values: 124
+ different_values: 123
+ variants: [omitted]
+ 'domain':
+ type: array
+ path: domain.domain
+ is_null: false
+ values: 124
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: domain.domain.[]
+ is_null: false
+ values: 124
+ different_values: 64
+ variants: [omitted]
+ 'domain_markdown':
+ type: string
+ path: domain.domain_markdown
+ is_null: false
+ values: 124
+ different_values: 124 (all different)
+ variants: [omitted]
+ 'domain_spell_markdown':
+ type: string
+ path: domain.domain_spell_markdown
+ is_null: false
+ values: 124
+ different_values: 124 (all different)
+ variants: [omitted]
+ 'id':
+ type: string
+ path: domain.id
+ is_null: false
+ values: 124
+ different_values: 124 (all different)
+ variants: [omitted]
+ 'source_category':
+ type: array
+ path: domain.source_category
+ is_null: false
+ values: 124
+ min_count: 1
+ max_count: 2
+ value_type:
+ type: string
+ path: domain.source_category.[]
+ is_null: false
+ values: 128
+ different_values: 3
+ variants:
+ - "Rulebooks" (x77)
+ - "Lost Omens" (x44)
+ - "Adventure Paths" (x7)
+ [apocryphal_spell_markdown]:
+ type: string
+ path: domain.apocryphal_spell_markdown
+ is_null: true
+ values: 10
+ different_values: 5
+ variants:
+ - "[Hollow Heart](/Spells.aspx?ID=1170)" (x2)
+ - "[String of Fate](/Spells.aspx?ID=1175)" (x2)
+ - "[Cinder Gaze](/Spells.aspx?ID=1167)" (x2)
+ - "[Frenzied Revelry](/Spells.aspx?ID=1169)" (x2)
+ - "[Victory Cry](/Spells.aspx?ID=1176)" (x2)
+ 'source_markdown':
+ type: string
+ path: domain.source_markdown
+ is_null: false
+ values: 124
+ different_values: 30
+ variants: [omitted]
+ 'speed':
+ type: object
+ path: domain.speed
+ is_null: false
+ values: 124
+ schema:
+ 'summary_markdown':
+ type: string
+ path: domain.summary_markdown
+ is_null: false
+ values: 124
+ different_values: 69
+ variants: [omitted]
+ 'type':
+ type: string
+ path: domain.type
+ is_null: false
+ values: 124
+ different_values: 1 (all same)
+ variants: "Domain" (x124)
+ 'url':
+ type: string
+ path: domain.url
+ is_null: false
+ values: 124
+ different_values: 124 (all different)
+ variants: [omitted]
+ 'weakness':
+ type: object
+ path: domain.weakness
+ is_null: false
+ values: 124
+ schema:
+ [deity]:
+ type: array
+ path: domain.deity
+ is_null: true
+ values: 122
+ min_count: 1
+ max_count: 135
+ value_type:
+ type: string
+ path: domain.deity.[]
+ is_null: false
+ values: 4691
+ different_values: 449
+ variants: [omitted]
+ 'source':
+ type: array
+ path: domain.source
+ is_null: false
+ values: 124
+ min_count: 1
+ max_count: 2
+ value_type:
+ type: string
+ path: domain.source.[]
+ is_null: false
+ values: 128
+ different_values: 9
+ variants:
+ - "Core Rulebook" (x37)
+ - "Player Core" (x37)
+ - "Divine Mysteries" (x26)
+ - "Gods & Magic" (x18)
+ - "Pathfinder #148: Fires of the Haunted City" (x4)
+ - "Rage of Elements" (x3)
+ - "Pathfinder #161: Belly of the Black Whale" (x1)
+ - "Pathfinder #165: Eyes of Empty Death" (x1)
+ - "Pathfinder #186: Ghost King's Rage" (x1)
+ [legacy_id]:
+ type: array
+ path: domain.legacy_id
+ is_null: true
+ values: 59
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: domain.legacy_id.[]
+ is_null: false
+ values: 59
+ different_values: 59
+ variants: [omitted]
+ 'markdown':
+ type: string
+ path: domain.markdown
+ is_null: false
+ values: 124
+ different_values: 124 (all different)
+ variants: [omitted]
+ 'name':
+ type: string
+ path: domain.name
+ is_null: false
+ values: 124
+ different_values: 64
+ variants: [omitted]
+ 'primary_source_category':
+ type: string
+ path: domain.primary_source_category
+ is_null: false
+ values: 124
+ different_values: 3
+ variants:
+ - "Rulebooks" (x77)
+ - "Lost Omens" (x42)
+ - "Adventure Paths" (x5)
+ 'rarity':
+ type: string
+ path: domain.rarity
+ is_null: false
+ values: 124
+ different_values: 1 (all same)
+ variants: "common" (x124)
+ 'rarity_id':
+ type: integer
+ path: domain.rarity_id
+ is_null: false
+ values: 124
+ different_values: 1 (all same)
+ variants: 1 (x124)
+ 'resistance':
+ type: object
+ path: domain.resistance
+ is_null: false
+ values: 124
+ schema:
+ [pfs]:
+ type: string
+ path: domain.pfs
+ is_null: true
+ values: 121
+ different_values: 3
+ variants:
+ - "Standard" (x119)
+ - "Restricted" (x1)
+ - "Limited" (x1)
+ [primary_source_group]:
+ type: string
+ path: domain.primary_source_group
+ is_null: true
+ values: 5
+ different_values: 4
+ variants:
+ - "Age of Ashes" (x2)
+ - "Agents of Edgewatch" (x1)
+ - "Abomination Vaults" (x1)
+ - "Blood Lords" (x1)
+ 'release_date':
+ type: string
+ path: domain.release_date
+ is_null: false
+ values: 124
+ different_values: 9
+ variants:
+ - "2019-08-01" (x37)
+ - "2023-11-15" (x37)
+ - "2025-01-30" (x24)
+ - "2020-01-29" (x18)
+ - "2023-08-02" (x3)
+ - "2019-10-16" (x2)
+ - "2020-11-15" (x1)
+ - "2021-04-07" (x1)
+ - "2022-12-14" (x1)
+ [remaster_id]:
+ type: array
+ path: domain.remaster_id
+ is_null: true
+ values: 59
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: domain.remaster_id.[]
+ is_null: false
+ values: 59
+ different_values: 59
+ variants: [omitted]
+ 'search_markdown':
+ type: string
+ path: domain.search_markdown
+ is_null: false
+ values: 124
+ different_values: 124 (all different)
+ variants: [omitted]
+ [source_group]:
+ type: array
+ path: domain.source_group
+ is_null: true
+ values: 7
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: domain.source_group.[]
+ is_null: false
+ values: 7
+ different_values: 4
+ variants:
+ - "Age of Ashes" (x4)
+ - "Agents of Edgewatch" (x1)
+ - "Abomination Vaults" (x1)
+ - "Blood Lords" (x1)
diff --git a/output/aonprd/druidic-order.yaml b/output/aonprd/druidic-order.yaml
new file mode 100644
index 0000000..aacb572
--- /dev/null
+++ b/output/aonprd/druidic-order.yaml
@@ -0,0 +1,235 @@
+name: druidic-order
+values: 11
+schema:
+ 'category':
+ type: string
+ path: druidic-order.category
+ is_null: false
+ values: 11
+ different_values: 1 (all same)
+ variants: "druidic-order" (x11)
+ 'id':
+ type: string
+ path: druidic-order.id
+ is_null: false
+ values: 11
+ different_values: 11 (all different)
+ variants:
+ - "druidic-order-1" (x1)
+ - "druidic-order-2" (x1)
+ - "druidic-order-3" (x1)
+ - "druidic-order-4" (x1)
+ - "druidic-order-5" (x1)
+ - "druidic-order-6" (x1)
+ - "druidic-order-7" (x1)
+ - "druidic-order-8" (x1)
+ - "druidic-order-9" (x1)
+ - "druidic-order-10" (x1)
+ - "druidic-order-11" (x1)
+ 'legacy_id':
+ type: array
+ path: druidic-order.legacy_id
+ is_null: false
+ values: 4
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: druidic-order.legacy_id.[]
+ is_null: false
+ values: 4
+ different_values: 4
+ variants:
+ - "druidic-order-1" (x1)
+ - "druidic-order-2" (x1)
+ - "druidic-order-3" (x1)
+ - "druidic-order-4" (x1)
+ 'markdown':
+ type: string
+ path: druidic-order.markdown
+ is_null: false
+ values: 11
+ different_values: 11 (all different)
+ variants: [omitted]
+ 'name':
+ type: string
+ path: druidic-order.name
+ is_null: false
+ values: 11
+ different_values: 8
+ variants:
+ - "Animal" (x2)
+ - "Leaf" (x2)
+ - "Storm" (x2)
+ - "Wild" (x1)
+ - "Flame" (x1)
+ - "Stone" (x1)
+ - "Wave" (x1)
+ - "Untamed" (x1)
+ 'pfs':
+ type: string
+ path: druidic-order.pfs
+ is_null: false
+ values: 11
+ different_values: 1 (all same)
+ variants: "Standard" (x11)
+ 'primary_source_category':
+ type: string
+ path: druidic-order.primary_source_category
+ is_null: false
+ values: 11
+ different_values: 1 (all same)
+ variants: "Rulebooks" (x11)
+ 'rarity':
+ type: string
+ path: druidic-order.rarity
+ is_null: false
+ values: 11
+ different_values: 1 (all same)
+ variants: "common" (x11)
+ 'rarity_id':
+ type: integer
+ path: druidic-order.rarity_id
+ is_null: false
+ values: 11
+ different_values: 1 (all same)
+ variants: 1 (x11)
+ 'release_date':
+ type: string
+ path: druidic-order.release_date
+ is_null: false
+ values: 11
+ different_values: 3
+ variants:
+ - "2019-08-01" (x4)
+ - "2023-11-15" (x4)
+ - "2021-09-01" (x3)
+ 'resistance':
+ type: object
+ path: druidic-order.resistance
+ is_null: false
+ values: 11
+ schema:
+ [remaster_id]:
+ type: array
+ path: druidic-order.remaster_id
+ is_null: true
+ values: 4
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: druidic-order.remaster_id.[]
+ is_null: false
+ values: 4
+ different_values: 4
+ variants:
+ - "druidic-order-8" (x1)
+ - "druidic-order-9" (x1)
+ - "druidic-order-10" (x1)
+ - "druidic-order-11" (x1)
+ 'search_markdown':
+ type: string
+ path: druidic-order.search_markdown
+ is_null: false
+ values: 11
+ different_values: 11 (all different)
+ variants: [omitted]
+ 'source':
+ type: array
+ path: druidic-order.source
+ is_null: false
+ values: 11
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: druidic-order.source.[]
+ is_null: false
+ values: 11
+ different_values: 3
+ variants:
+ - "Core Rulebook" (x4)
+ - "Player Core" (x4)
+ - "Secrets of Magic" (x3)
+ 'source_category':
+ type: array
+ path: druidic-order.source_category
+ is_null: false
+ values: 11
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: druidic-order.source_category.[]
+ is_null: false
+ values: 11
+ different_values: 1 (all same)
+ variants: "Rulebooks" (x11)
+ 'source_markdown':
+ type: string
+ path: druidic-order.source_markdown
+ is_null: false
+ values: 11
+ different_values: 5
+ variants:
+ - "[Secrets of Magic](/Sources.aspx?ID=96) pg. 198 2.0" (x3)
+ - "[Player Core](/Sources.aspx?ID=216) pg. 125 2.0" (x3)
+ - "[Core Rulebook](/Sources.aspx?ID=1) pg. 131 4.0" (x2)
+ - "[Core Rulebook](/Sources.aspx?ID=1) pg. 132 4.0" (x2)
+ - "[Player Core](/Sources.aspx?ID=216) pg. 126 2.0" (x1)
+ 'speed':
+ type: object
+ path: druidic-order.speed
+ is_null: false
+ values: 11
+ schema:
+ 'summary_markdown':
+ type: string
+ path: druidic-order.summary_markdown
+ is_null: false
+ values: 11
+ different_values: 11 (all different)
+ variants:
+ - "You have a strong connection to beasts, and you are allied with a beast companion. You are trained in Athletics . You also gain the Animal …" (x1)
+ - "You revere plants and the bounty of nature, acting as both a gardener and warden for the wilderness, teaching sustainable techniques to communities, …" (x1)
+ - "You carry the fury of the storm within you, channeling it to terrifying effect and riding the winds through the sky. You are trained in Acrobatics . …" (x1)
+ - "The savage, uncontrollable call of the natural world infuses you, granting you the ability to change your shape and take on the ferocious form of a …" (x1)
+ - "You feel a kinship with flames and can use them for succor and destruction. You're trained in Acrobatics . You also gain the Fire Lung druid feat. …" (x1)
+ - "You're as enduring as stone, and you take comfort in its steadfast presence, both natural and worked. You're trained in Crafting . You also gain the …" (x1)
+ - "Water is the source of life, and you've learned to shape how it flows. You're trained in Medicine . You also gain the Shore Step druid feat. You …" (x1)
+ - "You have a strong connection to beasts, always feeling like you understood them (and they you) better than your own people. You stand for the animals …" (x1)
+ - "You revere the bounty of nature, acting as both a gardener and warden for the wilderness. With your leshy familiar at your side, you help areas …" (x1)
+ - "Whether you were born under a tempest or survived a bolt of lightning from a clear blue sky, you now carry the fury of the storm in your heart, …" (x1)
+ - "The uncontrollable call of the natural world courses through your body. You might have been raised by a wild animal, or you might have come to reject …" (x1)
+ 'type':
+ type: string
+ path: druidic-order.type
+ is_null: false
+ values: 11
+ different_values: 1 (all same)
+ variants: "Druidic Order" (x11)
+ 'url':
+ type: string
+ path: druidic-order.url
+ is_null: false
+ values: 11
+ different_values: 11 (all different)
+ variants:
+ - "/DruidicOrders.aspx?ID=1" (x1)
+ - "/DruidicOrders.aspx?ID=2" (x1)
+ - "/DruidicOrders.aspx?ID=3" (x1)
+ - "/DruidicOrders.aspx?ID=4" (x1)
+ - "/DruidicOrders.aspx?ID=5" (x1)
+ - "/DruidicOrders.aspx?ID=6" (x1)
+ - "/DruidicOrders.aspx?ID=7" (x1)
+ - "/DruidicOrders.aspx?ID=8" (x1)
+ - "/DruidicOrders.aspx?ID=9" (x1)
+ - "/DruidicOrders.aspx?ID=10" (x1)
+ - "/DruidicOrders.aspx?ID=11" (x1)
+ 'weakness':
+ type: object
+ path: druidic-order.weakness
+ is_null: false
+ values: 11
+ schema:
diff --git a/output/aonprd/eidolon.yaml b/output/aonprd/eidolon.yaml
new file mode 100644
index 0000000..54adf7b
--- /dev/null
+++ b/output/aonprd/eidolon.yaml
@@ -0,0 +1,395 @@
+name: eidolon
+values: 12
+schema:
+ [alignment]:
+ type: string
+ path: eidolon.alignment
+ is_null: true
+ values: 3
+ different_values: 3
+ variants:
+ - "must be good, usually neutral good" (x1)
+ - "must be chaotic evil" (x1)
+ - "must be true neutral" (x1)
+ 'category':
+ type: string
+ path: eidolon.category
+ is_null: false
+ values: 12
+ different_values: 1 (all same)
+ variants: "eidolon" (x12)
+ 'id':
+ type: string
+ path: eidolon.id
+ is_null: false
+ values: 12
+ different_values: 12 (all different)
+ variants:
+ - "eidolon-1" (x1)
+ - "eidolon-2" (x1)
+ - "eidolon-3" (x1)
+ - "eidolon-4" (x1)
+ - "eidolon-5" (x1)
+ - "eidolon-6" (x1)
+ - "eidolon-7" (x1)
+ - "eidolon-8" (x1)
+ - "eidolon-9" (x1)
+ - "eidolon-10" (x1)
+ - "eidolon-11" (x1)
+ - "eidolon-12" (x1)
+ 'language_markdown':
+ type: string
+ path: eidolon.language_markdown
+ is_null: false
+ values: 12
+ different_values: 9
+ variants:
+ - "[Sylvan](/Languages.aspx?ID=10)" (x3)
+ - "one common mortal language the eidolon spoke in life" (x2)
+ - "[Celestial](/Languages.aspx?ID=16)" (x1)
+ - "one common mortal language" (x1)
+ - "[Abyssal](/Languages.aspx?ID=12)" (x1)
+ - "[Draconic](/Languages.aspx?ID=2)" (x1)
+ - "[Requian](/Languages.aspx?ID=34)" (x1)
+ - "[Necril](/Languages.aspx?ID=20)" (x1)
+ - "[Sussuran](/Languages.aspx?ID=111) (air elemental), [Petran](/Languages.aspx?ID=109) (earth elemental), [Pyric](/Languages.aspx?ID=110) (fire elemental), [Talican](/Languages.aspx?ID=112) (metal elemental), [Thalassic](/Languages.aspx?ID=113) (water elemental), or [Muan](/Languages.aspx?ID=108) (wood elemental)" (x1)
+ 'markdown':
+ type: string
+ path: eidolon.markdown
+ is_null: false
+ values: 12
+ different_values: 12 (all different)
+ variants: [omitted]
+ 'name':
+ type: string
+ path: eidolon.name
+ is_null: false
+ values: 12
+ different_values: 12 (all different)
+ variants:
+ - "Angel" (x1)
+ - "Anger Phantom" (x1)
+ - "Beast" (x1)
+ - "Construct" (x1)
+ - "Demon" (x1)
+ - "Devotion Phantom" (x1)
+ - "Dragon" (x1)
+ - "Fey" (x1)
+ - "Plant" (x1)
+ - "Psychopomp" (x1)
+ - "Undead" (x1)
+ - "Elemental" (x1)
+ 'pfs':
+ type: string
+ path: eidolon.pfs
+ is_null: false
+ values: 12
+ different_values: 2
+ variants:
+ - "Standard" (x11)
+ - "Restricted" (x1)
+ 'primary_source_category':
+ type: string
+ path: eidolon.primary_source_category
+ is_null: false
+ values: 12
+ different_values: 1 (all same)
+ variants: "Rulebooks" (x12)
+ 'rarity':
+ type: string
+ path: eidolon.rarity
+ is_null: false
+ values: 12
+ different_values: 1 (all same)
+ variants: "common" (x12)
+ 'rarity_id':
+ type: integer
+ path: eidolon.rarity_id
+ is_null: false
+ values: 12
+ different_values: 1 (all same)
+ variants: 1 (x12)
+ 'release_date':
+ type: string
+ path: eidolon.release_date
+ is_null: false
+ values: 12
+ different_values: 3
+ variants:
+ - "2021-09-01" (x10)
+ - "2022-04-27" (x1)
+ - "2023-08-02" (x1)
+ 'resistance':
+ type: object
+ path: eidolon.resistance
+ is_null: false
+ values: 12
+ schema:
+ 'search_markdown':
+ type: string
+ path: eidolon.search_markdown
+ is_null: false
+ values: 12
+ different_values: 12 (all different)
+ variants: [omitted]
+ 'sense_markdown':
+ type: string
+ path: eidolon.sense_markdown
+ is_null: false
+ values: 12
+ different_values: 3
+ variants:
+ - "[darkvision](/MonsterAbilities.aspx?ID=12)" (x8)
+ - "[low-light vision](/MonsterAbilities.aspx?ID=23)" (x3)
+ - "[darkvision](/Rules.aspx?ID=415)" (x1)
+ 'size':
+ type: array
+ path: eidolon.size
+ is_null: false
+ values: 12
+ min_count: 1
+ max_count: 2
+ value_type:
+ type: string
+ path: eidolon.size.[]
+ is_null: false
+ values: 18
+ different_values: 2
+ variants:
+ - "Medium" (x12)
+ - "Small" (x6)
+ 'size_id':
+ type: array
+ path: eidolon.size_id
+ is_null: false
+ values: 12
+ min_count: 1
+ max_count: 2
+ value_type:
+ type: integer
+ path: eidolon.size_id.[]
+ is_null: false
+ values: 18
+ different_values: 2
+ variants:
+ - 3 (x12)
+ - 2 (x6)
+ 'skill_markdown':
+ type: string
+ path: eidolon.skill_markdown
+ is_null: false
+ values: 12
+ different_values: 9
+ variants:
+ - "[Intimidation](/Skills.aspx?ID=7), [Religion](/Skills.aspx?ID=13)" (x3)
+ - "[Nature](/Skills.aspx?ID=10), [Survival](/Skills.aspx?ID=16)" (x2)
+ - "[Diplomacy](/Skills.aspx?ID=6), [Religion](/Skills.aspx?ID=13)" (x1)
+ - "[Intimidation](/Skills.aspx?ID=7), [Occultism](/Skills.aspx?ID=11)" (x1)
+ - "[Intimidation](/Skills.aspx?ID=7), [Nature](/Skills.aspx?ID=10)" (x1)
+ - "[Arcana](/Skills.aspx?ID=2), [Crafting](/Skills.aspx?ID=4)" (x1)
+ - "[Medicine](/Skills.aspx?ID=9), [Occultism](/Skills.aspx?ID=11)" (x1)
+ - "[Arcana](/Skills.aspx?ID=2), [Intimidation](/Skills.aspx?ID=7)" (x1)
+ - "[Deception](/Skills.aspx?ID=5), [Nature](/Skills.aspx?ID=10)" (x1)
+ 'source':
+ type: array
+ path: eidolon.source
+ is_null: false
+ values: 12
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: eidolon.source.[]
+ is_null: false
+ values: 12
+ different_values: 3
+ variants:
+ - "Secrets of Magic" (x10)
+ - "Book of the Dead" (x1)
+ - "Rage of Elements" (x1)
+ 'source_category':
+ type: array
+ path: eidolon.source_category
+ is_null: false
+ values: 12
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: eidolon.source_category.[]
+ is_null: false
+ values: 12
+ different_values: 1 (all same)
+ variants: "Rulebooks" (x12)
+ 'source_markdown':
+ type: string
+ path: eidolon.source_markdown
+ is_null: false
+ values: 12
+ different_values: 9
+ variants:
+ - "[Secrets of Magic](/Sources.aspx?ID=96) pg. 59 2.0" (x2)
+ - "[Secrets of Magic](/Sources.aspx?ID=96) pg. 61 2.0" (x2)
+ - "[Secrets of Magic](/Sources.aspx?ID=96) pg. 64 2.0" (x2)
+ - "[Secrets of Magic](/Sources.aspx?ID=96) pg. 62 2.0" (x1)
+ - "[Secrets of Magic](/Sources.aspx?ID=96) pg. 63 2.0" (x1)
+ - "[Secrets of Magic](/Sources.aspx?ID=96) pg. 65 2.0" (x1)
+ - "[Secrets of Magic](/Sources.aspx?ID=96) pg. 66 2.0" (x1)
+ - "[Book of the Dead](/Sources.aspx?ID=118) pg. 36" (x1)
+ - "[Rage of Elements](/Sources.aspx?ID=205) pg. 38 2.0" (x1)
+ 'speed':
+ type: object
+ path: eidolon.speed
+ is_null: false
+ values: 12
+ schema:
+ 'land':
+ type: integer
+ path: eidolon.speed.land
+ is_null: false
+ values: 12
+ different_values: 1 (all same)
+ variants: 25 (x12)
+ 'max':
+ type: integer
+ path: eidolon.speed.max
+ is_null: false
+ values: 12
+ different_values: 1 (all same)
+ variants: 25 (x12)
+ 'speed_markdown':
+ type: string
+ path: eidolon.speed_markdown
+ is_null: false
+ values: 12
+ different_values: 1 (all same)
+ variants: "25 feet" (x12)
+ 'summary_markdown':
+ type: string
+ path: eidolon.summary_markdown
+ is_null: false
+ values: 12
+ different_values: 12 (all different)
+ variants:
+ - "Your eidolon is a celestial messenger, a member of the angelic host with a unique link to you, allowing them to carry a special message to the mortal …" (x1)
+ - "Your eidolon is a lost soul, bound to the mortal world by undying anger or a bitter grudge. Most phantom eidolons are humanoids with a spectral or …" (x1)
+ - "Your eidolon is a manifestation of the life force of nature in the form of a powerful magical beast that often has animal features, possibly even …" (x1)
+ - "Your eidolon is a mental construct based on an astral thoughtform and given physical presence and life by its connection to you, its shape limited …" (x1)
+ - "Your eidolon is a demon , born of mortal sin congealed amid the chaos and evil of the Abyss , using its link to you to spread chaos at your side. …" (x1)
+ - "Your eidolon is a lost soul, unable to escape the mortal world due to a strong sense of duty, an undying devotion, or a need to complete an important …" (x1)
+ - "Because dragons have a strong connection to magic, their minds can often leave an echo floating in the Astral Plane . Such an entity is extremely …" (x1)
+ - "Your eidolon is a fey , a capricious being of the mysterious First World . Many fey appear similar to mortal humanoids with unusual features such …" (x1)
+ - "Your eidolon is an intelligent plant, formed from the same disembodied fragments of nature's life energy that become leshys. Plant eidolons tend to …" (x1)
+ - "Your eidolon is a psychopomp , a creature whose sworn duty is to usher souls safely to the afterlife and maintain the courts of the dead. Psychopomp …" (x1)
+ - "Your eidolon is an undead spirit pulled from the Ethereal Plane or Negative Energy Plane , embodied, and bound to your life force in an unusual, …" (x1)
+ - "Your eidolon is a primal chunk of elemental matter infused with sapience, power, and identity, but unable to manifest a true form of their own …" (x1)
+ 'tradition':
+ type: array
+ path: eidolon.tradition
+ is_null: false
+ values: 12
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: eidolon.tradition.[]
+ is_null: false
+ values: 12
+ different_values: 4
+ variants:
+ - "Divine" (x4)
+ - "Primal" (x4)
+ - "Occult" (x2)
+ - "Arcane" (x2)
+ 'tradition_markdown':
+ type: string
+ path: eidolon.tradition_markdown
+ is_null: false
+ values: 12
+ different_values: 4
+ variants:
+ - "[Divine](/SpellLists.aspx?Tradition=2)" (x4)
+ - "[Primal](/SpellLists.aspx?Tradition=4)" (x4)
+ - "[Occult](/SpellLists.aspx?Tradition=3)" (x2)
+ - "[Arcane](/SpellLists.aspx?Tradition=1)" (x2)
+ 'trait':
+ type: array
+ path: eidolon.trait
+ is_null: false
+ values: 12
+ min_count: 2
+ max_count: 3
+ value_type:
+ type: string
+ path: eidolon.trait.[]
+ is_null: false
+ values: 31
+ different_values: 17
+ variants:
+ - "Eidolon" (x12)
+ - "Ethereal" (x2)
+ - "Phantom" (x2)
+ - "Astral" (x2)
+ - "Angel" (x1)
+ - "Celestial" (x1)
+ - "Beast" (x1)
+ - "Construct" (x1)
+ - "Demon" (x1)
+ - "Fiend" (x1)
+ - "Dragon" (x1)
+ - "Fey" (x1)
+ - "Plant" (x1)
+ - "Monitor" (x1)
+ - "Psychopomp" (x1)
+ - "Undead" (x1)
+ - "Elemental" (x1)
+ 'trait_markdown':
+ type: string
+ path: eidolon.trait_markdown
+ is_null: false
+ values: 12
+ different_values: 11
+ variants:
+ - "[Eidolon](/Traits.aspx?ID=386), [Ethereal](/Traits.aspx?ID=63), [Phantom](/Traits.aspx?ID=361)" (x2)
+ - "[Angel](/Traits.aspx?ID=8), [Celestial](/Traits.aspx?ID=23), [Eidolon](/Traits.aspx?ID=386)" (x1)
+ - "[Beast](/Traits.aspx?ID=20), [Eidolon](/Traits.aspx?ID=386)" (x1)
+ - "[Astral](/Traits.aspx?ID=14), [Construct](/Traits.aspx?ID=35), [Eidolon](/Traits.aspx?ID=386)" (x1)
+ - "[Demon](/Traits.aspx?ID=42), [Eidolon](/Traits.aspx?ID=386), [Fiend](/Traits.aspx?ID=70)" (x1)
+ - "[Astral](/Traits.aspx?ID=14), [Dragon](/Traits.aspx?ID=50), [Eidolon](/Traits.aspx?ID=386)" (x1)
+ - "[Eidolon](/Traits.aspx?ID=386), [Fey](/Traits.aspx?ID=69)" (x1)
+ - "[Eidolon](/Traits.aspx?ID=386), [Plant](/Traits.aspx?ID=125)" (x1)
+ - "[Eidolon](/Traits.aspx?ID=386), [Monitor](/Traits.aspx?ID=111), [Psychopomp](/Traits.aspx?ID=232)" (x1)
+ - "[Eidolon](/Traits.aspx?ID=386), [Undead](/Traits.aspx?ID=160)" (x1)
+ - "[Eidolon](/Traits.aspx?ID=386), [Elemental](/Traits.aspx?ID=57)" (x1)
+ 'type':
+ type: string
+ path: eidolon.type
+ is_null: false
+ values: 12
+ different_values: 1 (all same)
+ variants: "Summoner Eidolon" (x12)
+ 'url':
+ type: string
+ path: eidolon.url
+ is_null: false
+ values: 12
+ different_values: 12 (all different)
+ variants:
+ - "/Eidolons.aspx?ID=1" (x1)
+ - "/Eidolons.aspx?ID=2" (x1)
+ - "/Eidolons.aspx?ID=3" (x1)
+ - "/Eidolons.aspx?ID=4" (x1)
+ - "/Eidolons.aspx?ID=5" (x1)
+ - "/Eidolons.aspx?ID=6" (x1)
+ - "/Eidolons.aspx?ID=7" (x1)
+ - "/Eidolons.aspx?ID=8" (x1)
+ - "/Eidolons.aspx?ID=9" (x1)
+ - "/Eidolons.aspx?ID=10" (x1)
+ - "/Eidolons.aspx?ID=11" (x1)
+ - "/Eidolons.aspx?ID=12" (x1)
+ 'weakness':
+ type: object
+ path: eidolon.weakness
+ is_null: false
+ values: 12
+ schema:
diff --git a/output/aonprd/element.yaml b/output/aonprd/element.yaml
new file mode 100644
index 0000000..3df3096
--- /dev/null
+++ b/output/aonprd/element.yaml
@@ -0,0 +1,185 @@
+name: element
+values: 6
+schema:
+ 'category':
+ type: string
+ path: element.category
+ is_null: false
+ values: 6
+ different_values: 1 (all same)
+ variants: "element" (x6)
+ 'element':
+ type: array
+ path: element.element
+ is_null: false
+ values: 6
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: element.element.[]
+ is_null: false
+ values: 6
+ different_values: 6 (all different)
+ variants:
+ - "Air" (x1)
+ - "Earth" (x1)
+ - "Fire" (x1)
+ - "Metal" (x1)
+ - "Water" (x1)
+ - "Wood" (x1)
+ 'id':
+ type: string
+ path: element.id
+ is_null: false
+ values: 6
+ different_values: 6 (all different)
+ variants:
+ - "element-1" (x1)
+ - "element-2" (x1)
+ - "element-3" (x1)
+ - "element-5" (x1)
+ - "element-6" (x1)
+ - "element-7" (x1)
+ 'markdown':
+ type: string
+ path: element.markdown
+ is_null: false
+ values: 6
+ different_values: 6 (all different)
+ variants: [omitted]
+ 'name':
+ type: string
+ path: element.name
+ is_null: false
+ values: 6
+ different_values: 6 (all different)
+ variants:
+ - "Air" (x1)
+ - "Earth" (x1)
+ - "Fire" (x1)
+ - "Metal" (x1)
+ - "Water" (x1)
+ - "Wood" (x1)
+ 'primary_source_category':
+ type: string
+ path: element.primary_source_category
+ is_null: false
+ values: 6
+ different_values: 1 (all same)
+ variants: "Rulebooks" (x6)
+ 'rarity':
+ type: string
+ path: element.rarity
+ is_null: false
+ values: 6
+ different_values: 1 (all same)
+ variants: "common" (x6)
+ 'rarity_id':
+ type: integer
+ path: element.rarity_id
+ is_null: false
+ values: 6
+ different_values: 1 (all same)
+ variants: 1 (x6)
+ 'release_date':
+ type: string
+ path: element.release_date
+ is_null: false
+ values: 6
+ different_values: 1 (all same)
+ variants: "2023-08-02" (x6)
+ 'resistance':
+ type: object
+ path: element.resistance
+ is_null: false
+ values: 6
+ schema:
+ 'search_markdown':
+ type: string
+ path: element.search_markdown
+ is_null: false
+ values: 6
+ different_values: 1 (all same)
+ variants: [omitted]
+ 'source':
+ type: array
+ path: element.source
+ is_null: false
+ values: 6
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: element.source.[]
+ is_null: false
+ values: 6
+ different_values: 1 (all same)
+ variants: "Rage of Elements" (x6)
+ 'source_category':
+ type: array
+ path: element.source_category
+ is_null: false
+ values: 6
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: element.source_category.[]
+ is_null: false
+ values: 6
+ different_values: 1 (all same)
+ variants: "Rulebooks" (x6)
+ 'source_markdown':
+ type: string
+ path: element.source_markdown
+ is_null: false
+ values: 6
+ different_values: 1 (all same)
+ variants: "[Rage of Elements](/Sources.aspx?ID=205) pg. 14 2.0" (x6)
+ 'speed':
+ type: object
+ path: element.speed
+ is_null: false
+ values: 6
+ schema:
+ 'summary_markdown':
+ type: string
+ path: element.summary_markdown
+ is_null: false
+ values: 6
+ different_values: 1 (all same)
+ variants: "" (x6)
+ 'trait_markdown':
+ type: string
+ path: element.trait_markdown
+ is_null: false
+ values: 6
+ different_values: 1 (all same)
+ variants: "" (x6)
+ 'type':
+ type: string
+ path: element.type
+ is_null: false
+ values: 6
+ different_values: 1 (all same)
+ variants: "Kineticist Element" (x6)
+ 'url':
+ type: string
+ path: element.url
+ is_null: false
+ values: 6
+ different_values: 6 (all different)
+ variants:
+ - "/Elements.aspx?ID=1" (x1)
+ - "/Elements.aspx?ID=2" (x1)
+ - "/Elements.aspx?ID=3" (x1)
+ - "/Elements.aspx?ID=5" (x1)
+ - "/Elements.aspx?ID=6" (x1)
+ - "/Elements.aspx?ID=7" (x1)
+ 'weakness':
+ type: object
+ path: element.weakness
+ is_null: false
+ values: 6
+ schema:
diff --git a/output/aonprd/epithet.yaml b/output/aonprd/epithet.yaml
new file mode 100644
index 0000000..1236d07
--- /dev/null
+++ b/output/aonprd/epithet.yaml
@@ -0,0 +1,228 @@
+name: epithet
+values: 16
+schema:
+ 'category':
+ type: string
+ path: epithet.category
+ is_null: false
+ values: 16
+ different_values: 1 (all same)
+ variants: "epithet" (x16)
+ 'id':
+ type: string
+ path: epithet.id
+ is_null: false
+ values: 16
+ different_values: 16 (all different)
+ variants:
+ - "epithet-1" (x1)
+ - "epithet-2" (x1)
+ - "epithet-3" (x1)
+ - "epithet-4" (x1)
+ - "epithet-5" (x1)
+ - "epithet-6" (x1)
+ - "epithet-7" (x1)
+ - "epithet-8" (x1)
+ - "epithet-9" (x1)
+ - "epithet-10" (x1)
+ - "epithet-11" (x1)
+ - "epithet-12" (x1)
+ - "epithet-13" (x1)
+ - "epithet-14" (x1)
+ - "epithet-15" (x1)
+ - "epithet-16" (x1)
+ 'level':
+ type: integer
+ path: epithet.level
+ is_null: false
+ values: 16
+ different_values: 3
+ variants:
+ - 3 (x6)
+ - 7 (x6)
+ - 15 (x4)
+ 'markdown':
+ type: string
+ path: epithet.markdown
+ is_null: false
+ values: 16
+ different_values: 16 (all different)
+ variants: [omitted]
+ 'name':
+ type: string
+ path: epithet.name
+ is_null: false
+ values: 16
+ different_values: 16 (all different)
+ variants:
+ - "The Brave" (x1)
+ - "The Cunning" (x1)
+ - "The Deft" (x1)
+ - "The Proud" (x1)
+ - "The Mournful" (x1)
+ - "The Radiant" (x1)
+ - "Born of the Bones of the Earth" (x1)
+ - "Dancer in the Seasons" (x1)
+ - "Of Verse Unbroken" (x1)
+ - "Peerless under Heaven" (x1)
+ - "Restless as the Tides" (x1)
+ - "Whose Cry is Thunder" (x1)
+ - "Healer of the World" (x1)
+ - "Teacher of Heroes" (x1)
+ - "The Last Ruler" (x1)
+ - "Thief of Moonlight" (x1)
+ 'pfs':
+ type: string
+ path: epithet.pfs
+ is_null: false
+ values: 16
+ different_values: 1 (all same)
+ variants: "Standard" (x16)
+ 'primary_source_category':
+ type: string
+ path: epithet.primary_source_category
+ is_null: false
+ values: 16
+ different_values: 1 (all same)
+ variants: "Rulebooks" (x16)
+ 'rarity':
+ type: string
+ path: epithet.rarity
+ is_null: false
+ values: 16
+ different_values: 1 (all same)
+ variants: "common" (x16)
+ 'rarity_id':
+ type: integer
+ path: epithet.rarity_id
+ is_null: false
+ values: 16
+ different_values: 1 (all same)
+ variants: 1 (x16)
+ 'release_date':
+ type: string
+ path: epithet.release_date
+ is_null: false
+ values: 16
+ different_values: 1 (all same)
+ variants: "2024-10-30" (x16)
+ 'resistance':
+ type: object
+ path: epithet.resistance
+ is_null: false
+ values: 16
+ schema:
+ 'search_markdown':
+ type: string
+ path: epithet.search_markdown
+ is_null: false
+ values: 16
+ different_values: 16 (all different)
+ variants: [omitted]
+ 'source':
+ type: array
+ path: epithet.source
+ is_null: false
+ values: 16
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: epithet.source.[]
+ is_null: false
+ values: 16
+ different_values: 1 (all same)
+ variants: "War of Immortals" (x16)
+ 'source_category':
+ type: array
+ path: epithet.source_category
+ is_null: false
+ values: 16
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: epithet.source_category.[]
+ is_null: false
+ values: 16
+ different_values: 1 (all same)
+ variants: "Rulebooks" (x16)
+ 'source_markdown':
+ type: string
+ path: epithet.source_markdown
+ is_null: false
+ values: 16
+ different_values: 4
+ variants:
+ - "[War of Immortals](/Sources.aspx?ID=232) pg. 33" (x6)
+ - "[War of Immortals](/Sources.aspx?ID=232) pg. 34" (x4)
+ - "[War of Immortals](/Sources.aspx?ID=232) pg. 31" (x3)
+ - "[War of Immortals](/Sources.aspx?ID=232) pg. 32" (x3)
+ 'speed':
+ type: object
+ path: epithet.speed
+ is_null: false
+ values: 16
+ schema:
+ 'summary_markdown':
+ type: string
+ path: epithet.summary_markdown
+ is_null: false
+ values: 16
+ different_values: 16 (all different)
+ variants:
+ - "Your deeds show fearlessness: when a beast surfaces, you're there to fight it; when someone's lost in the dark, you're first to the rescue. You're …" (x1)
+ - "Why race a hare across a meadow, or a salmon up a waterfall? Why face a titan in a test of strength? Wouldn't it be better to best your foes with a …" (x1)
+ - "Speed, subtlety, and precision. Your feet rush as fast as a gale, but your fingers touch as lightly as a breeze. You are trained in Thievery . After …" (x1)
+ - "Whether out of overconfidence, a desire to protect your comrades, or the unslakable thirst for glory, you invite challengers to strike you down. You …" (x1)
+ - "To be a hero is to endure countless hardships and stand where others have fallen, shouldering dreams and destinies in their stead. Though this weight …" (x1)
+ - "Leaders must live bigger lives than any other, shining so brightly that they attract followers, inspire troops, and change the course of kingdoms. …" (x1)
+ - "Your dominion is over stone and soil, the pillars holding up the stage of history's great legends. You gain the Energized Spark feat (page 35) for …" (x1)
+ - "You flourish in spring and idle in summer, give in fall and take in winter. You gain the Energized Spark feat for your choice of cold, fire, void, or …" (x1)
+ - "Though you are a warrior, you respect the power of song, oratory, and other arts, knowing it is these forces that make fights worth fighting. You …" (x1)
+ - "For as long as there have been gods, they have made war, and you aim to stand atop the pile when the fighting's over. When you critically succeed on …" (x1)
+ - "Your dominion is over the ocean, the great source and ultimate taker of lives. You gain the Energized Spark feat for your choice of water or cold. …" (x1)
+ - "The sky overhead is yours to command as lightning strikes your soul. You gain the Energized Spark feat for your choice of electricity or sonic. When …" (x1)
+ - "Your legacy is written in the lives you save. In your presence, coughs cease and aches abate, as a soft glow fills any living being in your presence. …" (x1)
+ - "Those who make great names for themselves as heroes are called upon to train those who follow them, and such is your destiny—to be remembered not …" (x1)
+ - "Whether your destiny is monarch or god, the spirit of all rulers past and future grants you an unrivaled commanding presence. After you Spark …" (x1)
+ - "Though your tales are not sung out loud, they still live on as cautionary tales, whispers, tall tales, and half-believed rumors. You walk hidden …" (x1)
+ 'type':
+ type: string
+ path: epithet.type
+ is_null: false
+ values: 16
+ different_values: 3
+ variants:
+ - "Exemplar Root Epithet" (x6)
+ - "Exemplar Dominion Epithet" (x6)
+ - "Exemplar Sovereignty Epithet" (x4)
+ 'url':
+ type: string
+ path: epithet.url
+ is_null: false
+ values: 16
+ different_values: 16 (all different)
+ variants:
+ - "/Epithets.aspx?ID=1" (x1)
+ - "/Epithets.aspx?ID=2" (x1)
+ - "/Epithets.aspx?ID=3" (x1)
+ - "/Epithets.aspx?ID=4" (x1)
+ - "/Epithets.aspx?ID=5" (x1)
+ - "/Epithets.aspx?ID=6" (x1)
+ - "/Epithets.aspx?ID=7" (x1)
+ - "/Epithets.aspx?ID=8" (x1)
+ - "/Epithets.aspx?ID=9" (x1)
+ - "/Epithets.aspx?ID=10" (x1)
+ - "/Epithets.aspx?ID=11" (x1)
+ - "/Epithets.aspx?ID=12" (x1)
+ - "/Epithets.aspx?ID=13" (x1)
+ - "/Epithets.aspx?ID=14" (x1)
+ - "/Epithets.aspx?ID=15" (x1)
+ - "/Epithets.aspx?ID=16" (x1)
+ 'weakness':
+ type: object
+ path: epithet.weakness
+ is_null: false
+ values: 16
+ schema:
diff --git a/output/aonprd/equipment-bonus.yaml b/output/aonprd/equipment-bonus.yaml
new file mode 100644
index 0000000..e771af0
--- /dev/null
+++ b/output/aonprd/equipment-bonus.yaml
@@ -0,0 +1,591 @@
+name: equipment-bonus
+values: 816
+schema:
+ 'base_item_markdown':
+ type: string
+ path: equipment-bonus.base_item_markdown
+ is_null: false
+ values: 816
+ different_values: 31
+ variants: [omitted]
+ 'bulk':
+ type: float
+ path: equipment-bonus.bulk
+ is_null: false
+ values: 816
+ different_values: 10
+ variants:
+ - 0.1 (x370)
+ - 0 (x287)
+ - 1 (x97)
+ - 2 (x40)
+ - 3 (x12)
+ - 16 (x4)
+ - 4 (x2)
+ - 8 (x2)
+ - 6 (x1)
+ - 5 (x1)
+ [bulk_raw]:
+ type: string
+ path: equipment-bonus.bulk_raw
+ is_null: true
+ values: 529
+ different_values: 9
+ variants:
+ - "L" (x370)
+ - "1" (x97)
+ - "2" (x40)
+ - "3" (x12)
+ - "16" (x4)
+ - "4" (x2)
+ - "8" (x2)
+ - "6" (x1)
+ - "5" (x1)
+ 'category':
+ type: string
+ path: equipment-bonus.category
+ is_null: false
+ values: 816
+ different_values: 1 (all same)
+ variants: "item-bonus" (x816)
+ 'summary_markdown':
+ type: string
+ path: equipment-bonus.summary_markdown
+ is_null: false
+ values: 816
+ different_values: 602
+ variants: [omitted]
+ 'trait_markdown':
+ type: string
+ path: equipment-bonus.trait_markdown
+ is_null: false
+ values: 816
+ different_values: 269
+ variants: [omitted]
+ 'type':
+ type: string
+ path: equipment-bonus.type
+ is_null: false
+ values: 816
+ different_values: 1 (all same)
+ variants: "Item" (x816)
+ 'url':
+ type: string
+ path: equipment-bonus.url
+ is_null: false
+ values: 816
+ different_values: 460
+ variants: [omitted]
+ 'weakness':
+ type: object
+ path: equipment-bonus.weakness
+ is_null: false
+ values: 816
+ schema:
+ [actions]:
+ type: string
+ path: equipment-bonus.actions
+ is_null: true
+ values: 150
+ different_values: 5
+ variants:
+ - "Single Action" (x143)
+ - "Free Action" (x3)
+ - "Three Actions" (x2)
+ - "Reaction" (x1)
+ - "Two Actions" (x1)
+ [alignment]:
+ type: string
+ path: equipment-bonus.alignment
+ is_null: true
+ values: 4
+ different_values: 1 (all same)
+ variants: "No Alignment" (x4)
+ [duration]:
+ type: integer
+ path: equipment-bonus.duration
+ is_null: true
+ values: 13
+ different_values: 6
+ variants:
+ - 21600 (x3)
+ - 14400 (x3)
+ - 10800 (x2)
+ - 86400 (x2)
+ - 28800 (x2)
+ - 3600 (x1)
+ [duration_raw]:
+ type: string
+ path: equipment-bonus.duration_raw
+ is_null: true
+ values: 13
+ different_values: 6
+ variants:
+ - "6 hours" (x3)
+ - "4 hours" (x3)
+ - "3 hours" (x2)
+ - "1 day" (x2)
+ - "8 hours" (x2)
+ - "1 hour" (x1)
+ [element]:
+ type: array
+ path: equipment-bonus.element
+ is_null: true
+ values: 37
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: equipment-bonus.element.[]
+ is_null: false
+ values: 37
+ different_values: 6
+ variants:
+ - "Wood" (x10)
+ - "Fire" (x9)
+ - "Air" (x7)
+ - "Earth" (x4)
+ - "Metal" (x4)
+ - "Water" (x3)
+ [hands]:
+ type: string
+ path: equipment-bonus.hands
+ is_null: true
+ values: 20
+ different_values: 2
+ variants:
+ - "2" (x17)
+ - "1" (x3)
+ 'id':
+ type: string
+ path: equipment-bonus.id
+ is_null: false
+ values: 816
+ different_values: 816 (all different)
+ variants: [omitted]
+ [item_bonus_action]:
+ type: string
+ path: equipment-bonus.item_bonus_action
+ is_null: true
+ values: 107
+ different_values: 6
+ variants:
+ - "Perception" (x77)
+ - "Recall Knowledge" (x15)
+ - "Decipher Writing" (x5)
+ - "Learn a Spell" (x4)
+ - "Identify Magic" (x4)
+ - "Earn Income" (x2)
+ 'item_bonus_consumable':
+ type: boolean
+ path: equipment-bonus.item_bonus_consumable
+ is_null: false
+ values: 816
+ different_values: 2
+ variants:
+ - False (x666)
+ - True (x150)
+ 'item_bonus_value':
+ type: integer
+ path: equipment-bonus.item_bonus_value
+ is_null: false
+ values: 816
+ different_values: 5
+ variants:
+ - 2 (x346)
+ - 1 (x294)
+ - 3 (x144)
+ - 4 (x28)
+ - -1 (x4)
+ 'item_category':
+ type: string
+ path: equipment-bonus.item_category
+ is_null: false
+ values: 816
+ different_values: 24
+ variants: [omitted]
+ [frequency]:
+ type: string
+ path: equipment-bonus.frequency
+ is_null: true
+ values: 1
+ different_values: 1 (all same)
+ variants: "once per day" (x1)
+ [item_bonus_note]:
+ type: string
+ path: equipment-bonus.item_bonus_note
+ is_null: true
+ values: 506
+ different_values: 300
+ variants: [omitted]
+ [item_child_id]:
+ type: array
+ path: equipment-bonus.item_child_id
+ is_null: true
+ values: 28
+ min_count: 1
+ max_count: 7
+ value_type:
+ type: string
+ path: equipment-bonus.item_child_id.[]
+ is_null: false
+ values: 94
+ different_values: 38
+ variants: [omitted]
+ [item_subcategory]:
+ type: string
+ path: equipment-bonus.item_subcategory
+ is_null: true
+ values: 571
+ different_values: 29
+ variants: [omitted]
+ 'speed':
+ type: object
+ path: equipment-bonus.speed
+ is_null: false
+ values: 816
+ schema:
+ [legacy_id]:
+ type: array
+ path: equipment-bonus.legacy_id
+ is_null: true
+ values: 163
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: equipment-bonus.legacy_id.[]
+ is_null: false
+ values: 163
+ different_values: 67
+ variants: [omitted]
+ 'level':
+ type: integer
+ path: equipment-bonus.level
+ is_null: false
+ values: 816
+ different_values: 26
+ variants: [omitted]
+ 'markdown':
+ type: string
+ path: equipment-bonus.markdown
+ is_null: false
+ values: 816
+ different_values: 460
+ variants: [omitted]
+ 'name':
+ type: string
+ path: equipment-bonus.name
+ is_null: false
+ values: 816
+ different_values: 608
+ variants: [omitted]
+ [onset_raw]:
+ type: string
+ path: equipment-bonus.onset_raw
+ is_null: true
+ values: 12
+ different_values: 3
+ variants:
+ - "1 hour" (x5)
+ - "1 minute" (x5)
+ - "10 minutes" (x2)
+ 'rarity_id':
+ type: integer
+ path: equipment-bonus.rarity_id
+ is_null: false
+ values: 816
+ different_values: 4
+ variants:
+ - 1 (x476)
+ - 2 (x199)
+ - 3 (x83)
+ - 4 (x58)
+ 'release_date':
+ type: string
+ path: equipment-bonus.release_date
+ is_null: false
+ values: 816
+ different_values: 41
+ variants: [omitted]
+ [requirement_markdown]:
+ type: string
+ path: equipment-bonus.requirement_markdown
+ is_null: true
+ values: 1
+ different_values: 1 (all same)
+ variants: "You are an expert in [Athletics](/Skills.aspx?ID=3)." (x1)
+ 'resistance':
+ type: object
+ path: equipment-bonus.resistance
+ is_null: false
+ values: 816
+ schema:
+ [pfs]:
+ type: string
+ path: equipment-bonus.pfs
+ is_null: true
+ values: 726
+ different_values: 3
+ variants:
+ - "Standard" (x624)
+ - "Limited" (x82)
+ - "Restricted" (x20)
+ 'primary_source_category':
+ type: string
+ path: equipment-bonus.primary_source_category
+ is_null: false
+ values: 816
+ different_values: 6
+ variants:
+ - "Rulebooks" (x558)
+ - "Adventure Paths" (x115)
+ - "Lost Omens" (x112)
+ - "Adventures" (x24)
+ - "Blog Posts" (x4)
+ - "Comics" (x3)
+ 'rarity':
+ type: string
+ path: equipment-bonus.rarity
+ is_null: false
+ values: 816
+ different_values: 4
+ variants:
+ - "common" (x476)
+ - "uncommon" (x199)
+ - "rare" (x83)
+ - "unique" (x58)
+ [price_raw]:
+ type: string
+ path: equipment-bonus.price_raw
+ is_null: true
+ values: 725
+ different_values: 146
+ variants: [omitted]
+ [primary_source_group]:
+ type: string
+ path: equipment-bonus.primary_source_group
+ is_null: true
+ values: 139
+ different_values: 19
+ variants:
+ - "Stolen Fate" (x42)
+ - "Season of Ghosts" (x24)
+ - "Blood Lords" (x10)
+ - "Kingmaker" (x8)
+ - "Extinction Curse" (x6)
+ - "Prey for Death" (x6)
+ - "Agents of Edgewatch" (x5)
+ - "Malevolence" (x5)
+ - "Strength of Thousands" (x5)
+ - "Age of Ashes" (x4)
+ - "Night of the Gray Death" (x4)
+ - "Crown of the Kobold King" (x4)
+ - "Gatewalkers" (x4)
+ - "The Fall of Plaguestone" (x3)
+ - "Abomination Vaults" (x3)
+ - "Fists of the Ruby Phoenix" (x2)
+ - "Quest for the Frozen Flame" (x2)
+ - "Troubles in Otari" (x1)
+ - "Shadows at Sundown" (x1)
+ [remaster_id]:
+ type: array
+ path: equipment-bonus.remaster_id
+ is_null: true
+ values: 65
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: equipment-bonus.remaster_id.[]
+ is_null: false
+ values: 65
+ different_values: 43
+ variants: [omitted]
+ [saving_throw_markdown]:
+ type: string
+ path: equipment-bonus.saving_throw_markdown
+ is_null: true
+ values: 13
+ different_values: 5
+ variants:
+ - "DC 20 Fortitude" (x4)
+ - "DC 25 Fortitude" (x3)
+ - "DC 15 Fortitude" (x3)
+ - "DC 16 Fortitude" (x2)
+ - "DC 13 Fortitude" (x1)
+ [school]:
+ type: string
+ path: equipment-bonus.school
+ is_null: true
+ values: 419
+ different_values: 8
+ variants:
+ - "divination" (x115)
+ - "transmutation" (x89)
+ - "enchantment" (x75)
+ - "illusion" (x33)
+ - "conjuration" (x32)
+ - "abjuration" (x27)
+ - "necromancy" (x25)
+ - "evocation" (x23)
+ 'search_markdown':
+ type: string
+ path: equipment-bonus.search_markdown
+ is_null: false
+ values: 816
+ different_values: 631
+ variants: [omitted]
+ 'skill_markdown':
+ type: string
+ path: equipment-bonus.skill_markdown
+ is_null: false
+ values: 816
+ different_values: 34
+ variants: [omitted]
+ 'source':
+ type: array
+ path: equipment-bonus.source
+ is_null: false
+ values: 816
+ min_count: 1
+ max_count: 2
+ value_type:
+ type: string
+ path: equipment-bonus.source.[]
+ is_null: false
+ values: 843
+ different_values: 64
+ variants: [omitted]
+ 'source_category':
+ type: array
+ path: equipment-bonus.source_category
+ is_null: false
+ values: 816
+ min_count: 1
+ max_count: 2
+ value_type:
+ type: string
+ path: equipment-bonus.source_category.[]
+ is_null: false
+ values: 838
+ different_values: 6
+ variants:
+ - "Rulebooks" (x564)
+ - "Adventure Paths" (x126)
+ - "Lost Omens" (x113)
+ - "Adventures" (x24)
+ - "Comics" (x7)
+ - "Blog Posts" (x4)
+ [source_group]:
+ type: array
+ path: equipment-bonus.source_group
+ is_null: true
+ values: 150
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: equipment-bonus.source_group.[]
+ is_null: false
+ values: 150
+ different_values: 19
+ variants:
+ - "Stolen Fate" (x42)
+ - "Season of Ghosts" (x24)
+ - "Blood Lords" (x10)
+ - "Extinction Curse" (x8)
+ - "Agents of Edgewatch" (x8)
+ - "Kingmaker" (x8)
+ - "Strength of Thousands" (x7)
+ - "Age of Ashes" (x6)
+ - "Prey for Death" (x6)
+ - "Gatewalkers" (x5)
+ - "Malevolence" (x5)
+ - "Night of the Gray Death" (x4)
+ - "Crown of the Kobold King" (x4)
+ - "The Fall of Plaguestone" (x3)
+ - "Abomination Vaults" (x3)
+ - "Quest for the Frozen Flame" (x3)
+ - "Fists of the Ruby Phoenix" (x2)
+ - "Troubles in Otari" (x1)
+ - "Shadows at Sundown" (x1)
+ 'source_markdown':
+ type: string
+ path: equipment-bonus.source_markdown
+ is_null: false
+ values: 816
+ different_values: 303
+ variants: [omitted]
+ [spoilers]:
+ type: string
+ path: equipment-bonus.spoilers
+ is_null: true
+ values: 136
+ different_values: 19
+ variants:
+ - "Stolen Fate" (x42)
+ - "Season of Ghosts" (x24)
+ - "Blood Lords" (x10)
+ - "Kingmaker" (x8)
+ - "Extinction Curse" (x6)
+ - "Prey for Death" (x6)
+ - "Malevolence" (x5)
+ - "Strength of Thousands" (x5)
+ - "Age of Ashes" (x4)
+ - "Night of the Gray Death" (x4)
+ - "Crown of the Kobold King" (x4)
+ - "Gatewalkers" (x4)
+ - "The Fall of Plaguestone" (x3)
+ - "Abomination Vaults" (x3)
+ - "Agents of Edgewatch" (x2)
+ - "Fists of the Ruby Phoenix" (x2)
+ - "Quest for the Frozen Flame" (x2)
+ - "Troubles in Otari" (x1)
+ - "Shadows at Sundown" (x1)
+ [stage_markdown]:
+ type: string
+ path: equipment-bonus.stage_markdown
+ is_null: true
+ values: 425
+ different_values: 8
+ variants: [omitted]
+ [trait]:
+ type: array
+ path: equipment-bonus.trait
+ is_null: true
+ values: 791
+ min_count: 1
+ max_count: 7
+ value_type:
+ type: string
+ path: equipment-bonus.trait.[]
+ is_null: false
+ values: 2843
+ different_values: 86
+ variants: [omitted]
+ [trigger_markdown]:
+ type: string
+ path: equipment-bonus.trigger_markdown
+ is_null: true
+ values: 4
+ different_values: 4
+ variants:
+ - "You would miss with an attack made with a bow." (x1)
+ - "You take the [Leap](/Actions.aspx?ID=81) action." (x1)
+ - "You use the affixed shield to [Shield Block](/Feats.aspx?ID=839) a melee weapon attack" (x1)
+ - "You attempt to Grab an Edge but haven't rolled" (x1)
+ [usage_markdown]:
+ type: string
+ path: equipment-bonus.usage_markdown
+ is_null: true
+ values: 766
+ different_values: 62
+ variants: [omitted]
+ 'spell_markdown':
+ type: string
+ path: equipment-bonus.spell_markdown
+ is_null: false
+ values: 816
+ different_values: 1 (all same)
+ variants: "" (x816)
diff --git a/output/aonprd/equipment-sub.yaml b/output/aonprd/equipment-sub.yaml
new file mode 100644
index 0000000..865b0b7
--- /dev/null
+++ b/output/aonprd/equipment-sub.yaml
@@ -0,0 +1,513 @@
+name: equipment-sub
+values: 2879
+schema:
+ 'bulk':
+ type: float
+ path: equipment-sub.bulk
+ is_null: false
+ values: 2776
+ different_values: 11
+ variants:
+ - 0.1 (x1267)
+ - 0 (x1021)
+ - 1 (x384)
+ - 2 (x64)
+ - 3 (x18)
+ - 4 (x10)
+ - 16 (x5)
+ - 8 (x3)
+ - 6 (x2)
+ - 5 (x1)
+ - 12 (x1)
+ [actions]:
+ type: string
+ path: equipment-sub.actions
+ is_null: true
+ values: 796
+ different_values: 5
+ variants:
+ - "Single Action" (x648)
+ - "Two Actions" (x89)
+ - "Free Action" (x41)
+ - "Three Actions" (x15)
+ - "Reaction" (x3)
+ 'base_item_markdown':
+ type: string
+ path: equipment-sub.base_item_markdown
+ is_null: false
+ values: 2776
+ different_values: 39
+ variants: [omitted]
+ [bulk_raw]:
+ type: string
+ path: equipment-sub.bulk_raw
+ is_null: true
+ values: 1755
+ different_values: 10
+ variants:
+ - "L" (x1267)
+ - "1" (x384)
+ - "2" (x64)
+ - "3" (x18)
+ - "4" (x10)
+ - "16" (x5)
+ - "8" (x3)
+ - "6" (x2)
+ - "5" (x1)
+ - "12" (x1)
+ 'category':
+ type: string
+ path: equipment-sub.category
+ is_null: false
+ values: 2879
+ different_values: 2
+ variants:
+ - "equipment" (x2776)
+ - "category-page" (x103)
+ 'item_category':
+ type: string
+ path: equipment-sub.item_category
+ is_null: false
+ values: 2776
+ different_values: 27
+ variants: [omitted]
+ [duration]:
+ type: integer
+ path: equipment-sub.duration
+ is_null: true
+ values: 6
+ different_values: 3
+ variants:
+ - 600 (x3)
+ - 6 (x2)
+ - 28800 (x1)
+ [duration_raw]:
+ type: string
+ path: equipment-sub.duration_raw
+ is_null: true
+ values: 6
+ different_values: 3
+ variants:
+ - "10 minutes" (x3)
+ - "1 round (or 4 rounds)" (x2)
+ - "8 hours" (x1)
+ [element]:
+ type: array
+ path: equipment-sub.element
+ is_null: true
+ values: 225
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: equipment-sub.element.[]
+ is_null: false
+ values: 225
+ different_values: 6
+ variants:
+ - "Fire" (x104)
+ - "Water" (x34)
+ - "Wood" (x27)
+ - "Air" (x25)
+ - "Earth" (x24)
+ - "Metal" (x11)
+ 'id':
+ type: string
+ path: equipment-sub.id
+ is_null: false
+ values: 2879
+ different_values: 2879 (all different)
+ variants: [omitted]
+ [hands]:
+ type: string
+ path: equipment-sub.hands
+ is_null: true
+ values: 75
+ different_values: 2
+ variants:
+ - "2" (x57)
+ - "1" (x18)
+ [item_subcategory]:
+ type: string
+ path: equipment-sub.item_subcategory
+ is_null: true
+ values: 1920
+ different_values: 53
+ variants: [omitted]
+ 'level':
+ type: integer
+ path: equipment-sub.level
+ is_null: false
+ values: 2776
+ different_values: 22
+ variants: [omitted]
+ 'markdown':
+ type: string
+ path: equipment-sub.markdown
+ is_null: false
+ values: 2879
+ different_values: 975
+ variants: [omitted]
+ 'primary_source_category':
+ type: string
+ path: equipment-sub.primary_source_category
+ is_null: false
+ values: 2879
+ different_values: 7
+ variants:
+ - "Rulebooks" (x2081)
+ - "Lost Omens" (x525)
+ - "Adventure Paths" (x217)
+ - "Comics" (x28)
+ - "Adventures" (x17)
+ - "Blog Posts" (x8)
+ - "Society" (x3)
+ 'spell_markdown':
+ type: string
+ path: equipment-sub.spell_markdown
+ is_null: false
+ values: 2776
+ different_values: 14
+ variants:
+ - "" (x2747)
+ - "[Shocking Grasp](/Spells.aspx?ID=283)" (x4)
+ - "[Fireball](/Spells.aspx?ID=119)" (x3)
+ - "[Heal](/Spells.aspx?ID=148)" (x3)
+ - "[Fire Shield](/Spells.aspx?ID=118)" (x3)
+ - "[Spiritual Weapon](/Spells.aspx?ID=306)" (x2)
+ - "[Wall of Fire](/Spells.aspx?ID=362)" (x2)
+ - "[Mask of Terror](/Spells.aspx?ID=185)" (x2)
+ - "[Vampiric Touch](/Spells.aspx?ID=354)" (x2)
+ - "[Mage Armor](/Spells.aspx?ID=176)" (x2)
+ - "[Charm](/Spells.aspx?ID=34)" (x2)
+ - "[Color Spray](/Spells.aspx?ID=44)" (x2)
+ - "[Vampiric Touch](/Spells.aspx?ID=354), [Vampiric Maiden](/Spells.aspx?ID=725)" (x1)
+ - "[Vampiric Touch](/Spells.aspx?ID=354), [Vampiric Maiden](/Spells.aspx?ID=725), [Vampiric Exsanguination](/Spells.aspx?ID=353)" (x1)
+ 'trait_markdown':
+ type: string
+ path: equipment-sub.trait_markdown
+ is_null: false
+ values: 2776
+ different_values: 438
+ variants: [omitted]
+ [legacy_id]:
+ type: array
+ path: equipment-sub.legacy_id
+ is_null: true
+ values: 674
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: equipment-sub.legacy_id.[]
+ is_null: false
+ values: 674
+ different_values: 212
+ variants: [omitted]
+ 'name':
+ type: string
+ path: equipment-sub.name
+ is_null: false
+ values: 2879
+ different_values: 2878
+ variants: [omitted]
+ [onset_raw]:
+ type: string
+ path: equipment-sub.onset_raw
+ is_null: true
+ values: 4
+ different_values: 2
+ variants:
+ - "1 minute" (x3)
+ - "10 minutes" (x1)
+ [primary_source_group]:
+ type: string
+ path: equipment-sub.primary_source_group
+ is_null: true
+ values: 234
+ different_values: 18
+ variants:
+ - "Quest for the Frozen Flame" (x31)
+ - "Strength of Thousands" (x27)
+ - "Blood Lords" (x26)
+ - "Outlaws of Alkenstar" (x23)
+ - "Gatewalkers" (x17)
+ - "Sky King's Tomb" (x16)
+ - "Agents of Edgewatch" (x15)
+ - "Abomination Vaults" (x12)
+ - "Extinction Curse" (x12)
+ - "Prey for Death" (x12)
+ - "Kingmaker" (x10)
+ - "Age of Ashes" (x10)
+ - "Season of Ghosts" (x7)
+ - "Seven Dooms for Sandpoint" (x6)
+ - "Fists of the Ruby Phoenix" (x4)
+ - "The Slithering" (x3)
+ - "Night of the Gray Death" (x2)
+ - "Stolen Fate" (x1)
+ 'rarity_id':
+ type: integer
+ path: equipment-sub.rarity_id
+ is_null: false
+ values: 2879
+ different_values: 4
+ variants:
+ - 1 (x1852)
+ - 2 (x802)
+ - 3 (x219)
+ - 4 (x6)
+ 'release_date':
+ type: string
+ path: equipment-sub.release_date
+ is_null: false
+ values: 2879
+ different_values: 57
+ variants: [omitted]
+ 'resistance':
+ type: object
+ path: equipment-sub.resistance
+ is_null: false
+ values: 2879
+ schema:
+ [pfs]:
+ type: string
+ path: equipment-sub.pfs
+ is_null: true
+ values: 2691
+ different_values: 3
+ variants:
+ - "Standard" (x2379)
+ - "Limited" (x269)
+ - "Restricted" (x43)
+ [price_raw]:
+ type: string
+ path: equipment-sub.price_raw
+ is_null: true
+ values: 2752
+ different_values: 389
+ variants: [omitted]
+ [remaster_id]:
+ type: array
+ path: equipment-sub.remaster_id
+ is_null: true
+ values: 193
+ min_count: 1
+ max_count: 2
+ value_type:
+ type: string
+ path: equipment-sub.remaster_id.[]
+ is_null: false
+ values: 200
+ different_values: 57
+ variants: [omitted]
+ 'search_markdown':
+ type: string
+ path: equipment-sub.search_markdown
+ is_null: false
+ values: 2879
+ different_values: 2857
+ variants: [omitted]
+ 'source':
+ type: array
+ path: equipment-sub.source
+ is_null: false
+ values: 2879
+ min_count: 1
+ max_count: 2
+ value_type:
+ type: string
+ path: equipment-sub.source.[]
+ is_null: false
+ values: 2991
+ different_values: 83
+ variants: [omitted]
+ 'source_category':
+ type: array
+ path: equipment-sub.source_category
+ is_null: false
+ values: 2879
+ min_count: 1
+ max_count: 2
+ value_type:
+ type: string
+ path: equipment-sub.source_category.[]
+ is_null: false
+ values: 2933
+ different_values: 7
+ variants:
+ - "Rulebooks" (x2088)
+ - "Lost Omens" (x538)
+ - "Adventure Paths" (x229)
+ - "Adventures" (x36)
+ - "Comics" (x31)
+ - "Blog Posts" (x8)
+ - "Society" (x3)
+ 'source_markdown':
+ type: string
+ path: equipment-sub.source_markdown
+ is_null: false
+ values: 2879
+ different_values: 528
+ variants: [omitted]
+ 'speed':
+ type: object
+ path: equipment-sub.speed
+ is_null: false
+ values: 2879
+ schema:
+ [school]:
+ type: string
+ path: equipment-sub.school
+ is_null: true
+ values: 1015
+ different_values: 8
+ variants:
+ - "evocation" (x254)
+ - "transmutation" (x206)
+ - "conjuration" (x121)
+ - "necromancy" (x97)
+ - "abjuration" (x97)
+ - "divination" (x92)
+ - "enchantment" (x90)
+ - "illusion" (x58)
+ [source_group]:
+ type: array
+ path: equipment-sub.source_group
+ is_null: true
+ values: 265
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: equipment-sub.source_group.[]
+ is_null: false
+ values: 265
+ different_values: 19
+ variants:
+ - "Strength of Thousands" (x36)
+ - "Quest for the Frozen Flame" (x31)
+ - "Blood Lords" (x26)
+ - "Outlaws of Alkenstar" (x23)
+ - "Gatewalkers" (x17)
+ - "Sky King's Tomb" (x16)
+ - "The Slithering" (x15)
+ - "Agents of Edgewatch" (x15)
+ - "Extinction Curse" (x14)
+ - "Abomination Vaults" (x12)
+ - "Prey for Death" (x12)
+ - "Age of Ashes" (x11)
+ - "Kingmaker" (x10)
+ - "Season of Ghosts" (x7)
+ - "The Fall of Plaguestone" (x7)
+ - "Seven Dooms for Sandpoint" (x6)
+ - "Fists of the Ruby Phoenix" (x4)
+ - "Night of the Gray Death" (x2)
+ - "Stolen Fate" (x1)
+ [spoilers]:
+ type: string
+ path: equipment-sub.spoilers
+ is_null: true
+ values: 223
+ different_values: 17
+ variants:
+ - "Quest for the Frozen Flame" (x31)
+ - "Strength of Thousands" (x27)
+ - "Blood Lords" (x26)
+ - "Outlaws of Alkenstar" (x23)
+ - "Gatewalkers" (x17)
+ - "Sky King's Tomb" (x16)
+ - "Extinction Curse" (x12)
+ - "Agents of Edgewatch" (x12)
+ - "Prey for Death" (x12)
+ - "Age of Ashes" (x10)
+ - "Kingmaker" (x9)
+ - "Abomination Vaults" (x7)
+ - "Season of Ghosts" (x6)
+ - "Seven Dooms for Sandpoint" (x6)
+ - "Fists of the Ruby Phoenix" (x4)
+ - "The Slithering" (x3)
+ - "Night of the Gray Death" (x2)
+ [summary_markdown]:
+ type: string
+ path: equipment-sub.summary_markdown
+ is_null: true
+ values: 2847
+ different_values: 2300
+ variants: [omitted]
+ [trait]:
+ type: array
+ path: equipment-sub.trait
+ is_null: true
+ values: 2525
+ min_count: 1
+ max_count: 8
+ value_type:
+ type: string
+ path: equipment-sub.trait.[]
+ is_null: false
+ values: 8392
+ different_values: 108
+ variants: [omitted]
+ 'rarity':
+ type: string
+ path: equipment-sub.rarity
+ is_null: false
+ values: 2879
+ different_values: 4
+ variants:
+ - "common" (x1852)
+ - "uncommon" (x802)
+ - "rare" (x219)
+ - "unique" (x6)
+ 'type':
+ type: string
+ path: equipment-sub.type
+ is_null: false
+ values: 2879
+ different_values: 2
+ variants:
+ - "Item" (x2776)
+ - "Category Page" (x103)
+ 'url':
+ type: string
+ path: equipment-sub.url
+ is_null: false
+ values: 2879
+ different_values: 975
+ variants: [omitted]
+ 'weakness':
+ type: object
+ path: equipment-sub.weakness
+ is_null: false
+ values: 2879
+ schema:
+ [trigger_markdown]:
+ type: string
+ path: equipment-sub.trigger_markdown
+ is_null: true
+ values: 37
+ different_values: 16
+ variants:
+ - "You're critically hit by a firearm attack." (x3)
+ - "You attempt a ranged Strike with the affixed weapon before rolling" (x3)
+ - "You hit a target with a ranged Strike with the affixed weapon" (x3)
+ - "You lose the [dying](/Conditions.aspx?ID=11) condition" (x3)
+ - "You take physical damage" (x3)
+ - "You make an attack with the affixed weapon, but you haven't rolled yet" (x3)
+ - "Your Strike with the affixed weapon damages a creature" (x2)
+ - "You roll for initiative" (x2)
+ - "varies, see entry" (x2)
+ - "You would be reduced to 0 Hit Points by damage but not immediately killed" (x2)
+ - "A creature critically hits you." (x2)
+ - "You are targeted by a spell of 5th level or lower" (x2)
+ - "You use the affixed shield to [Shield Block](/Feats.aspx?ID=839) a melee attack" (x2)
+ - "You hit a [off-guard](/Conditions.aspx?ID=58) creature with the affixed weapon" (x2)
+ - "You deal damage using the affixed weapon to a creature that has the [unholy trait](/Traits.aspx?ID=521) or that you witnessed harm an ally, an innocent, or noncombatant within the last minute." (x2)
+ - "A creature within 60 feet casts a summon spell" (x1)
+ [usage_markdown]:
+ type: string
+ path: equipment-sub.usage_markdown
+ is_null: true
+ values: 2329
+ different_values: 82
+ variants: [omitted]
diff --git a/output/aonprd/equipment.yaml b/output/aonprd/equipment.yaml
new file mode 100644
index 0000000..1a9df00
--- /dev/null
+++ b/output/aonprd/equipment.yaml
@@ -0,0 +1,502 @@
+name: equipment
+values: 3484
+schema:
+ [actions]:
+ type: string
+ path: equipment.actions
+ is_null: true
+ values: 991
+ different_values: 6
+ variants:
+ - "Single Action" (x692)
+ - "Two Actions" (x142)
+ - "Free Action" (x119)
+ - "Three Actions" (x21)
+ - "Reaction" (x15)
+ - "Single Action or Two Actions" (x2)
+ [alignment]:
+ type: string
+ path: equipment.alignment
+ is_null: true
+ values: 32
+ different_values: 6
+ variants:
+ - "No Alignment" (x20)
+ - "LG" (x4)
+ - "CN" (x3)
+ - "CG" (x2)
+ - "LN" (x2)
+ - "N" (x1)
+ 'base_item_markdown':
+ type: string
+ path: equipment.base_item_markdown
+ is_null: false
+ values: 3484
+ different_values: 174
+ variants: [omitted]
+ 'bulk':
+ type: float
+ path: equipment.bulk
+ is_null: false
+ values: 3484
+ different_values: 14
+ variants:
+ - 0 (x1430)
+ - 0.1 (x1398)
+ - 1 (x436)
+ - 2 (x134)
+ - 3 (x32)
+ - 4 (x30)
+ - 5 (x9)
+ - 6 (x5)
+ - 16 (x2)
+ - 40 (x2)
+ - 8 (x2)
+ - 20 (x2)
+ - 10 (x1)
+ - 18 (x1)
+ 'category':
+ type: string
+ path: equipment.category
+ is_null: false
+ values: 3484
+ different_values: 1 (all same)
+ variants: "equipment" (x3484)
+ 'id':
+ type: string
+ path: equipment.id
+ is_null: false
+ values: 3484
+ different_values: 3484 (all different)
+ variants: [omitted]
+ 'item_category':
+ type: string
+ path: equipment.item_category
+ is_null: false
+ values: 3484
+ different_values: 34
+ variants: [omitted]
+ [bulk_raw]:
+ type: string
+ path: equipment.bulk_raw
+ is_null: true
+ values: 2111
+ different_values: 31
+ variants: [omitted]
+ [duration]:
+ type: integer
+ path: equipment.duration
+ is_null: true
+ values: 187
+ different_values: 20
+ variants:
+ - 36 (x77)
+ - 360 (x26)
+ - 3600 (x15)
+ - 1800 (x8)
+ - 14400 (x7)
+ - 604800 (x7)
+ - 24 (x6)
+ - 28800 (x6)
+ - 60 (x6)
+ - 600 (x5)
+ - 21600 (x5)
+ - 300 (x4)
+ - 18 (x4)
+ - 432000 (x3)
+ - 86400 (x2)
+ - 50400 (x2)
+ - 10800 (x1)
+ - 12 (x1)
+ - 36000 (x1)
+ - 6 (x1)
+ [duration_raw]:
+ type: string
+ path: equipment.duration_raw
+ is_null: true
+ values: 187
+ different_values: 25
+ variants: [omitted]
+ [element]:
+ type: array
+ path: equipment.element
+ is_null: true
+ values: 194
+ min_count: 1
+ max_count: 2
+ value_type:
+ type: string
+ path: equipment.element.[]
+ is_null: false
+ values: 195
+ different_values: 6
+ variants:
+ - "Fire" (x81)
+ - "Air" (x32)
+ - "Water" (x27)
+ - "Earth" (x27)
+ - "Wood" (x18)
+ - "Metal" (x10)
+ [frequency]:
+ type: string
+ path: equipment.frequency
+ is_null: true
+ values: 2
+ different_values: 1 (all same)
+ variants: "once per day" (x2)
+ [hands]:
+ type: string
+ path: equipment.hands
+ is_null: true
+ values: 180
+ different_values: 3
+ variants:
+ - "2" (x88)
+ - "1" (x87)
+ - "-1" (x5)
+ [item_child_id]:
+ type: array
+ path: equipment.item_child_id
+ is_null: true
+ values: 872
+ min_count: 1
+ max_count: 24
+ value_type:
+ type: string
+ path: equipment.item_child_id.[]
+ is_null: false
+ values: 2776
+ different_values: 2776
+ variants: [omitted]
+ 'trait_markdown':
+ type: string
+ path: equipment.trait_markdown
+ is_null: false
+ values: 3484
+ different_values: 1305
+ variants: [omitted]
+ 'type':
+ type: string
+ path: equipment.type
+ is_null: false
+ values: 3484
+ different_values: 1 (all same)
+ variants: "Item" (x3484)
+ [item_subcategory]:
+ type: string
+ path: equipment.item_subcategory
+ is_null: true
+ values: 2340
+ different_values: 70
+ variants: [omitted]
+ 'spell_markdown':
+ type: string
+ path: equipment.spell_markdown
+ is_null: false
+ values: 3484
+ different_values: 41
+ variants: [omitted]
+ 'stage_markdown':
+ type: string
+ path: equipment.stage_markdown
+ is_null: false
+ values: 3484
+ different_values: 171
+ variants: [omitted]
+ 'url':
+ type: string
+ path: equipment.url
+ is_null: false
+ values: 3484
+ different_values: 3484 (all different)
+ variants: [omitted]
+ 'weakness':
+ type: object
+ path: equipment.weakness
+ is_null: false
+ values: 3484
+ schema:
+ [legacy_id]:
+ type: array
+ path: equipment.legacy_id
+ is_null: true
+ values: 517
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: equipment.legacy_id.[]
+ is_null: false
+ values: 517
+ different_values: 516
+ variants: [omitted]
+ 'level':
+ type: integer
+ path: equipment.level
+ is_null: false
+ values: 3484
+ different_values: 29
+ variants: [omitted]
+ 'markdown':
+ type: string
+ path: equipment.markdown
+ is_null: false
+ values: 3484
+ different_values: 3484 (all different)
+ variants: [omitted]
+ 'name':
+ type: string
+ path: equipment.name
+ is_null: false
+ values: 3484
+ different_values: 2956
+ variants: [omitted]
+ 'primary_source_category':
+ type: string
+ path: equipment.primary_source_category
+ is_null: false
+ values: 3484
+ different_values: 7
+ variants:
+ - "Rulebooks" (x2304)
+ - "Lost Omens" (x590)
+ - "Adventure Paths" (x492)
+ - "Adventures" (x69)
+ - "Comics" (x22)
+ - "Blog Posts" (x5)
+ - "Society" (x2)
+ [pfs]:
+ type: string
+ path: equipment.pfs
+ is_null: true
+ values: 3156
+ different_values: 3
+ variants:
+ - "Standard" (x2629)
+ - "Limited" (x418)
+ - "Restricted" (x109)
+ 'rarity':
+ type: string
+ path: equipment.rarity
+ is_null: false
+ values: 3484
+ different_values: 4
+ variants:
+ - "common" (x1828)
+ - "uncommon" (x1017)
+ - "rare" (x457)
+ - "unique" (x182)
+ 'rarity_id':
+ type: integer
+ path: equipment.rarity_id
+ is_null: false
+ values: 3484
+ different_values: 4
+ variants:
+ - 1 (x1828)
+ - 2 (x1017)
+ - 3 (x457)
+ - 4 (x182)
+ 'release_date':
+ type: string
+ path: equipment.release_date
+ is_null: false
+ values: 3484
+ different_values: 76
+ variants: [omitted]
+ 'resistance':
+ type: object
+ path: equipment.resistance
+ is_null: false
+ values: 3484
+ schema:
+ [onset_raw]:
+ type: string
+ path: equipment.onset_raw
+ is_null: true
+ values: 97
+ different_values: 8
+ variants:
+ - "1 minute" (x39)
+ - "10 minutes" (x28)
+ - "1 round" (x15)
+ - "1 hour" (x7)
+ - "30 minutes" (x4)
+ - "5 minutes" (x2)
+ - "1 day" (x1)
+ - "1d6 minutes" (x1)
+ [price_raw]:
+ type: string
+ path: equipment.price_raw
+ is_null: true
+ values: 2199
+ different_values: 266
+ variants: [omitted]
+ [primary_source_group]:
+ type: string
+ path: equipment.primary_source_group
+ is_null: true
+ values: 559
+ different_values: 26
+ variants: [omitted]
+ [remaster_id]:
+ type: array
+ path: equipment.remaster_id
+ is_null: true
+ values: 519
+ min_count: 1
+ max_count: 2
+ value_type:
+ type: string
+ path: equipment.remaster_id.[]
+ is_null: false
+ values: 520
+ different_values: 518
+ variants: [omitted]
+ [requirement_markdown]:
+ type: string
+ path: equipment.requirement_markdown
+ is_null: true
+ values: 99
+ different_values: 74
+ variants: [omitted]
+ [saving_throw_markdown]:
+ type: string
+ path: equipment.saving_throw_markdown
+ is_null: true
+ values: 181
+ different_values: 43
+ variants: [omitted]
+ [school]:
+ type: string
+ path: equipment.school
+ is_null: true
+ values: 1664
+ different_values: 8
+ variants:
+ - "transmutation" (x311)
+ - "evocation" (x292)
+ - "divination" (x208)
+ - "conjuration" (x205)
+ - "abjuration" (x202)
+ - "necromancy" (x185)
+ - "enchantment" (x161)
+ - "illusion" (x100)
+ 'search_markdown':
+ type: string
+ path: equipment.search_markdown
+ is_null: false
+ values: 3484
+ different_values: 3458
+ variants: [omitted]
+ 'source':
+ type: array
+ path: equipment.source
+ is_null: false
+ values: 3484
+ min_count: 1
+ max_count: 2
+ value_type:
+ type: string
+ path: equipment.source.[]
+ is_null: false
+ values: 3697
+ different_values: 116
+ variants: [omitted]
+ 'source_category':
+ type: array
+ path: equipment.source_category
+ is_null: false
+ values: 3484
+ min_count: 1
+ max_count: 2
+ value_type:
+ type: string
+ path: equipment.source_category.[]
+ is_null: false
+ values: 3594
+ different_values: 7
+ variants:
+ - "Rulebooks" (x2356)
+ - "Lost Omens" (x604)
+ - "Adventure Paths" (x530)
+ - "Adventures" (x74)
+ - "Comics" (x23)
+ - "Blog Posts" (x5)
+ - "Society" (x2)
+ [skill_markdown]:
+ type: string
+ path: equipment.skill_markdown
+ is_null: true
+ values: 438
+ different_values: 137
+ variants: [omitted]
+ [source_group]:
+ type: array
+ path: equipment.source_group
+ is_null: true
+ values: 602
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: equipment.source_group.[]
+ is_null: false
+ values: 602
+ different_values: 26
+ variants: [omitted]
+ 'source_markdown':
+ type: string
+ path: equipment.source_markdown
+ is_null: false
+ values: 3484
+ different_values: 1050
+ variants: [omitted]
+ [spoilers]:
+ type: string
+ path: equipment.spoilers
+ is_null: true
+ values: 540
+ different_values: 26
+ variants: [omitted]
+ 'speed':
+ type: object
+ path: equipment.speed
+ is_null: false
+ values: 3484
+ schema:
+ [summary_markdown]:
+ type: string
+ path: equipment.summary_markdown
+ is_null: true
+ values: 3387
+ different_values: 3190
+ variants: [omitted]
+ [trait]:
+ type: array
+ path: equipment.trait
+ is_null: true
+ values: 3169
+ min_count: 1
+ max_count: 9
+ value_type:
+ type: string
+ path: equipment.trait.[]
+ is_null: false
+ values: 11408
+ different_values: 139
+ variants: [omitted]
+ [trigger_markdown]:
+ type: string
+ path: equipment.trigger_markdown
+ is_null: true
+ values: 129
+ different_values: 111
+ variants: [omitted]
+ [usage_markdown]:
+ type: string
+ path: equipment.usage_markdown
+ is_null: true
+ values: 2798
+ different_values: 190
+ variants: [omitted]
diff --git a/output/aonprd/familiar-ability.yaml b/output/aonprd/familiar-ability.yaml
new file mode 100644
index 0000000..248da47
--- /dev/null
+++ b/output/aonprd/familiar-ability.yaml
@@ -0,0 +1,289 @@
+name: familiar-ability
+values: 181
+schema:
+ 'ability_type':
+ type: string
+ path: familiar-ability.ability_type
+ is_null: false
+ values: 181
+ different_values: 35
+ variants: [omitted]
+ 'category':
+ type: string
+ path: familiar-ability.category
+ is_null: false
+ values: 181
+ different_values: 1 (all same)
+ variants: "familiar-ability" (x181)
+ 'id':
+ type: string
+ path: familiar-ability.id
+ is_null: false
+ values: 181
+ different_values: 181 (all different)
+ variants: [omitted]
+ [actions]:
+ type: string
+ path: familiar-ability.actions
+ is_null: true
+ values: 25
+ different_values: 3
+ variants:
+ - "Single Action" (x12)
+ - "Two Actions" (x11)
+ - "Reaction" (x2)
+ [frequency]:
+ type: string
+ path: familiar-ability.frequency
+ is_null: true
+ values: 21
+ different_values: 7
+ variants:
+ - "once per hour" (x7)
+ - "once per 10 minutes" (x5)
+ - "once per day" (x3)
+ - "once per minute" (x2)
+ - "once per round" (x2)
+ - "once per day; Range 30 feet" (x1)
+ - "once per day; Trigger An attack would reduce your familiar to 0 Hit Points" (x1)
+ 'source_category':
+ type: array
+ path: familiar-ability.source_category
+ is_null: false
+ values: 181
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: familiar-ability.source_category.[]
+ is_null: false
+ values: 181
+ different_values: 6
+ variants:
+ - "Rulebooks" (x126)
+ - "Lost Omens" (x48)
+ - "Adventures" (x3)
+ - "Adventure Paths" (x2)
+ - "Comics" (x1)
+ - "Blog Posts" (x1)
+ 'source_markdown':
+ type: string
+ path: familiar-ability.source_markdown
+ is_null: false
+ values: 181
+ different_values: 30
+ variants: [omitted]
+ 'speed':
+ type: object
+ path: familiar-ability.speed
+ is_null: false
+ values: 181
+ schema:
+ 'summary_markdown':
+ type: string
+ path: familiar-ability.summary_markdown
+ is_null: false
+ values: 181
+ different_values: 168
+ variants: [omitted]
+ 'type':
+ type: string
+ path: familiar-ability.type
+ is_null: false
+ values: 181
+ different_values: 1 (all same)
+ variants: "Familiar Ability" (x181)
+ 'url':
+ type: string
+ path: familiar-ability.url
+ is_null: false
+ values: 181
+ different_values: 181 (all different)
+ variants: [omitted]
+ 'weakness':
+ type: object
+ path: familiar-ability.weakness
+ is_null: false
+ values: 181
+ schema:
+ [legacy_id]:
+ type: array
+ path: familiar-ability.legacy_id
+ is_null: true
+ values: 46
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: familiar-ability.legacy_id.[]
+ is_null: false
+ values: 46
+ different_values: 46
+ variants: [omitted]
+ 'markdown':
+ type: string
+ path: familiar-ability.markdown
+ is_null: false
+ values: 181
+ different_values: 181 (all different)
+ variants: [omitted]
+ 'name':
+ type: string
+ path: familiar-ability.name
+ is_null: false
+ values: 181
+ different_values: 127
+ variants: [omitted]
+ 'primary_source_category':
+ type: string
+ path: familiar-ability.primary_source_category
+ is_null: false
+ values: 181
+ different_values: 6
+ variants:
+ - "Rulebooks" (x126)
+ - "Lost Omens" (x48)
+ - "Adventures" (x3)
+ - "Adventure Paths" (x2)
+ - "Comics" (x1)
+ - "Blog Posts" (x1)
+ 'rarity':
+ type: string
+ path: familiar-ability.rarity
+ is_null: false
+ values: 181
+ different_values: 1 (all same)
+ variants: "common" (x181)
+ 'rarity_id':
+ type: integer
+ path: familiar-ability.rarity_id
+ is_null: false
+ values: 181
+ different_values: 1 (all same)
+ variants: 1 (x181)
+ 'release_date':
+ type: string
+ path: familiar-ability.release_date
+ is_null: false
+ values: 181
+ different_values: 16
+ variants:
+ - "2023-11-15" (x41)
+ - "2020-07-30" (x22)
+ - "2021-10-13" (x22)
+ - "2019-08-01" (x18)
+ - "2024-08-01" (x18)
+ - "2023-08-02" (x14)
+ - "2024-08-28" (x12)
+ - "2020-10-14" (x10)
+ - "2022-04-27" (x7)
+ - "2021-09-01" (x5)
+ - "2022-05-25" (x3)
+ - "2023-02-22" (x3)
+ - "2022-11-16" (x2)
+ - "2025-02-26" (x2)
+ - "2023-09-27" (x1)
+ - "2025-04-01" (x1)
+ 'resistance':
+ type: object
+ path: familiar-ability.resistance
+ is_null: false
+ values: 181
+ schema:
+ [pfs]:
+ type: string
+ path: familiar-ability.pfs
+ is_null: true
+ values: 177
+ different_values: 1 (all same)
+ variants: "Standard" (x177)
+ [primary_source_group]:
+ type: string
+ path: familiar-ability.primary_source_group
+ is_null: true
+ values: 5
+ different_values: 2
+ variants:
+ - "Shadows at Sundown" (x3)
+ - "Gatewalkers" (x2)
+ [remaster_id]:
+ type: array
+ path: familiar-ability.remaster_id
+ is_null: true
+ values: 46
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: familiar-ability.remaster_id.[]
+ is_null: false
+ values: 46
+ different_values: 46
+ variants: [omitted]
+ [requirement_markdown]:
+ type: string
+ path: familiar-ability.requirement_markdown
+ is_null: true
+ values: 6
+ different_values: 6
+ variants:
+ - "The dweomercat cub was targeted by a spell or was within the area of a spell as it was cast since its last turn" (x1)
+ - "Your familiar must have the manual dexterity ability to select this." (x1)
+ - "You must have a homunculus familiar to select this ability." (x1)
+ - "Your familiar must have the skilled ability to select this." (x1)
+ - "You must have the advanced alchemy ability to select this ability." (x1)
+ - "You must have the versatile vials ability to select this ability." (x1)
+ 'search_markdown':
+ type: string
+ path: familiar-ability.search_markdown
+ is_null: false
+ values: 181
+ different_values: 181 (all different)
+ variants: [omitted]
+ 'source':
+ type: array
+ path: familiar-ability.source
+ is_null: false
+ values: 181
+ min_count: 1
+ max_count: 3
+ value_type:
+ type: string
+ path: familiar-ability.source.[]
+ is_null: false
+ values: 185
+ different_values: 17
+ variants:
+ - "Player Core" (x41)
+ - "Advanced Player's Guide" (x22)
+ - "Grand Bazaar" (x22)
+ - "Core Rulebook" (x18)
+ - "Rage of Elements" (x18)
+ - "Player Core 2" (x18)
+ - "Tian Xia Character Guide" (x12)
+ - "PFS Guide" (x10)
+ - "Book of the Dead" (x7)
+ - "Secrets of Magic" (x5)
+ - "Shadows at Sundown" (x3)
+ - "Impossible Lands" (x2)
+ - "Pathfinder #188: They Watched the Stars" (x2)
+ - "Rival Academies" (x2)
+ - "Treasure Vault" (x1)
+ - "Wake the Dead #3" (x1)
+ - "Foolish Housekeeping and Other Articles" (x1)
+ [source_group]:
+ type: array
+ path: familiar-ability.source_group
+ is_null: true
+ values: 5
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: familiar-ability.source_group.[]
+ is_null: false
+ values: 5
+ different_values: 2
+ variants:
+ - "Shadows at Sundown" (x3)
+ - "Gatewalkers" (x2)
diff --git a/output/aonprd/familiar-specific.yaml b/output/aonprd/familiar-specific.yaml
new file mode 100644
index 0000000..6361c62
--- /dev/null
+++ b/output/aonprd/familiar-specific.yaml
@@ -0,0 +1,385 @@
+name: familiar-specific
+values: 42
+schema:
+ 'category':
+ type: string
+ path: familiar-specific.category
+ is_null: false
+ values: 42
+ different_values: 1 (all same)
+ variants: "familiar-specific" (x42)
+ 'familiar_ability':
+ type: array
+ path: familiar-specific.familiar_ability
+ is_null: false
+ values: 42
+ min_count: 2
+ max_count: 9
+ value_type:
+ type: string
+ path: familiar-specific.familiar_ability.[]
+ is_null: false
+ values: 236
+ different_values: 109
+ variants: [omitted]
+ 'id':
+ type: string
+ path: familiar-specific.id
+ is_null: false
+ values: 42
+ different_values: 42 (all different)
+ variants: [omitted]
+ [alignment]:
+ type: string
+ path: familiar-specific.alignment
+ is_null: true
+ values: 6
+ different_values: 2
+ variants:
+ - "N" (x5)
+ - "LE" (x1)
+ 'source_markdown':
+ type: string
+ path: familiar-specific.source_markdown
+ is_null: false
+ values: 42
+ different_values: 20
+ variants:
+ - "[Player Core 2](/Sources.aspx?ID=227) pg. 171 1.1" (x5)
+ - "[Book of the Dead](/Sources.aspx?ID=118) pg. 40" (x4)
+ - "[Tian Xia Character Guide](/Sources.aspx?ID=230) pg. 125" (x4)
+ - "[Advanced Player's Guide](/Sources.aspx?ID=39) pg. 147 2.0" (x3)
+ - "[PFS Guide](/Sources.aspx?ID=50) pg. 122" (x3)
+ - "[Grand Bazaar](/Sources.aspx?ID=100) pg. 35" (x3)
+ - "[Rage of Elements](/Sources.aspx?ID=205) pg. 43 2.0" (x3)
+ - "[Wake the Dead #3](/Sources.aspx?ID=212) pg. 25" (x3)
+ - "[Rage of Elements](/Sources.aspx?ID=205) pg. 42 2.0" (x2)
+ - "[Player Core 2](/Sources.aspx?ID=227) pg. 170 1.1" (x2)
+ - "[PFS Guide](/Sources.aspx?ID=50) pg. 123" (x1)
+ - "[Secrets of Magic](/Sources.aspx?ID=96) pg. 229 2.0" (x1)
+ - "[Grand Bazaar](/Sources.aspx?ID=100) pg. 23" (x1)
+ - "[Shadows at Sundown](/Sources.aspx?ID=121) pg. 53" (x1)
+ - "[Impossible Lands](/Sources.aspx?ID=146) pg. 220" (x1)
+ - "[Pathfinder #188: They Watched the Stars](/Sources.aspx?ID=194) pg. 83" (x1)
+ - "[Tian Xia Character Guide](/Sources.aspx?ID=230) pg. 124" (x1)
+ - "[Rival Academies](/Sources.aspx?ID=235) pg. 44" (x1)
+ - "[Rival Academies](/Sources.aspx?ID=235) pg. 45" (x1)
+ - "[Foolish Housekeeping and Other Articles](/Sources.aspx?ID=239)" (x1)
+ 'speed':
+ type: object
+ path: familiar-specific.speed
+ is_null: false
+ values: 42
+ schema:
+ 'summary_markdown':
+ type: string
+ path: familiar-specific.summary_markdown
+ is_null: false
+ values: 42
+ different_values: 38
+ variants: [omitted]
+ 'trait_markdown':
+ type: string
+ path: familiar-specific.trait_markdown
+ is_null: false
+ values: 42
+ different_values: 25
+ variants: [omitted]
+ 'type':
+ type: string
+ path: familiar-specific.type
+ is_null: false
+ values: 42
+ different_values: 1 (all same)
+ variants: "Specific Familiar" (x42)
+ 'url':
+ type: string
+ path: familiar-specific.url
+ is_null: false
+ values: 42
+ different_values: 42 (all different)
+ variants: [omitted]
+ 'weakness':
+ type: object
+ path: familiar-specific.weakness
+ is_null: false
+ values: 42
+ schema:
+ [element]:
+ type: array
+ path: familiar-specific.element
+ is_null: true
+ values: 2
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: familiar-specific.element.[]
+ is_null: false
+ values: 2
+ different_values: 2
+ variants:
+ - "Air" (x1)
+ - "Earth" (x1)
+ 'source':
+ type: array
+ path: familiar-specific.source
+ is_null: false
+ values: 42
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: familiar-specific.source.[]
+ is_null: false
+ values: 42
+ different_values: 14
+ variants:
+ - "Player Core 2" (x7)
+ - "Rage of Elements" (x5)
+ - "Tian Xia Character Guide" (x5)
+ - "PFS Guide" (x4)
+ - "Grand Bazaar" (x4)
+ - "Book of the Dead" (x4)
+ - "Advanced Player's Guide" (x3)
+ - "Wake the Dead #3" (x3)
+ - "Rival Academies" (x2)
+ - "Secrets of Magic" (x1)
+ - "Shadows at Sundown" (x1)
+ - "Impossible Lands" (x1)
+ - "Pathfinder #188: They Watched the Stars" (x1)
+ - "Foolish Housekeeping and Other Articles" (x1)
+ [legacy_id]:
+ type: array
+ path: familiar-specific.legacy_id
+ is_null: true
+ values: 7
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: familiar-specific.legacy_id.[]
+ is_null: false
+ values: 7
+ different_values: 7
+ variants:
+ - "familiar-specific-10" (x1)
+ - "familiar-specific-4" (x1)
+ - "familiar-specific-2" (x1)
+ - "familiar-specific-12" (x1)
+ - "familiar-specific-7" (x1)
+ - "familiar-specific-3" (x1)
+ - "familiar-specific-5" (x1)
+ 'markdown':
+ type: string
+ path: familiar-specific.markdown
+ is_null: false
+ values: 42
+ different_values: 42 (all different)
+ variants: [omitted]
+ 'name':
+ type: string
+ path: familiar-specific.name
+ is_null: false
+ values: 42
+ different_values: 35
+ variants: [omitted]
+ 'primary_source_category':
+ type: string
+ path: familiar-specific.primary_source_category
+ is_null: false
+ values: 42
+ different_values: 6
+ variants:
+ - "Rulebooks" (x20)
+ - "Lost Omens" (x16)
+ - "Comics" (x3)
+ - "Adventures" (x1)
+ - "Adventure Paths" (x1)
+ - "Blog Posts" (x1)
+ 'rarity':
+ type: string
+ path: familiar-specific.rarity
+ is_null: false
+ values: 42
+ different_values: 3
+ variants:
+ - "common" (x33)
+ - "uncommon" (x8)
+ - "rare" (x1)
+ 'rarity_id':
+ type: integer
+ path: familiar-specific.rarity_id
+ is_null: false
+ values: 42
+ different_values: 3
+ variants:
+ - 1 (x33)
+ - 2 (x8)
+ - 3 (x1)
+ 'release_date':
+ type: string
+ path: familiar-specific.release_date
+ is_null: false
+ values: 42
+ different_values: 14
+ variants:
+ - "2024-08-01" (x7)
+ - "2023-08-02" (x5)
+ - "2024-08-28" (x5)
+ - "2020-10-14" (x4)
+ - "2021-10-13" (x4)
+ - "2022-04-27" (x4)
+ - "2020-07-30" (x3)
+ - "2023-09-27" (x3)
+ - "2025-02-26" (x2)
+ - "2021-09-01" (x1)
+ - "2022-05-25" (x1)
+ - "2022-11-16" (x1)
+ - "2023-02-22" (x1)
+ - "2025-04-01" (x1)
+ 'required_abilities':
+ type: integer
+ path: familiar-specific.required_abilities
+ is_null: false
+ values: 42
+ different_values: 7
+ variants:
+ - 3 (x12)
+ - 6 (x9)
+ - 4 (x7)
+ - 5 (x7)
+ - 8 (x3)
+ - 1 (x2)
+ - 7 (x2)
+ 'resistance':
+ type: object
+ path: familiar-specific.resistance
+ is_null: false
+ values: 42
+ schema:
+ [pfs]:
+ type: string
+ path: familiar-specific.pfs
+ is_null: true
+ values: 40
+ different_values: 2
+ variants:
+ - "Standard" (x34)
+ - "Limited" (x6)
+ [primary_source_group]:
+ type: string
+ path: familiar-specific.primary_source_group
+ is_null: true
+ values: 2
+ different_values: 2
+ variants:
+ - "Shadows at Sundown" (x1)
+ - "Gatewalkers" (x1)
+ [remaster_id]:
+ type: array
+ path: familiar-specific.remaster_id
+ is_null: true
+ values: 7
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: familiar-specific.remaster_id.[]
+ is_null: false
+ values: 7
+ different_values: 7
+ variants:
+ - "familiar-specific-37" (x1)
+ - "familiar-specific-40" (x1)
+ - "familiar-specific-34" (x1)
+ - "familiar-specific-52" (x1)
+ - "familiar-specific-39" (x1)
+ - "familiar-specific-26" (x1)
+ - "familiar-specific-38" (x1)
+ 'search_markdown':
+ type: string
+ path: familiar-specific.search_markdown
+ is_null: false
+ values: 42
+ different_values: 42 (all different)
+ variants: [omitted]
+ 'source_category':
+ type: array
+ path: familiar-specific.source_category
+ is_null: false
+ values: 42
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: familiar-specific.source_category.[]
+ is_null: false
+ values: 42
+ different_values: 6
+ variants:
+ - "Rulebooks" (x20)
+ - "Lost Omens" (x16)
+ - "Comics" (x3)
+ - "Adventures" (x1)
+ - "Adventure Paths" (x1)
+ - "Blog Posts" (x1)
+ [source_group]:
+ type: array
+ path: familiar-specific.source_group
+ is_null: true
+ values: 2
+ min_count: 1
+ max_count: 1
+ value_type:
+ type: string
+ path: familiar-specific.source_group.[]
+ is_null: false
+ values: 2
+ different_values: 2
+ variants:
+ - "Shadows at Sundown" (x1)
+ - "Gatewalkers" (x1)
+ [spoilers]:
+ type: string
+ path: familiar-specific.spoilers
+ is_null: true
+ values: 2
+ different_values: 2
+ variants:
+ - "Shadows at Sundown" (x1)
+ - "Gatewalkers" (x1)
+ [trait]:
+ type: array
+ path: familiar-specific.trait
+ is_null: true
+ values: 40
+ min_count: 1
+ max_count: 3
+ value_type:
+ type: string
+ path: familiar-specific.trait.[]
+ is_null: false
+ values: 59
+ different_values: 20
+ variants:
+ - "Construct" (x10)
+ - "Beast" (x10)
+ - "Uncommon" (x8)
+ - "Elemental" (x6)
+ - "Undead" (x4)
+ - "Dragon" (x3)
+ - "Fiend" (x2)
+ - "Ooze" (x2)
+ - "Incorporeal" (x2)
+ - "Spirit" (x2)
+ - "Devil" (x1)
+ - "Shadow" (x1)
+ - "Clockwork" (x1)
+ - "Monitor" (x1)
+ - "Psychopomp" (x1)
+ - "Rare" (x1)
+ - "Air" (x1)
+ - "Earth" (x1)
+ - "Unholy" (x1)
+ - "Celestial" (x1)
diff --git a/output/aonprd/feat.yaml b/output/aonprd/feat.yaml
new file mode 100644
index 0000000..50ccb4b
--- /dev/null
+++ b/output/aonprd/feat.yaml
@@ -0,0 +1,530 @@
+name: feat
+values: 7125
+schema:
+ [actions]:
+ type: string
+ path: feat.actions
+ is_null: true
+ values: 2388
+ different_values: 9
+ variants:
+ - "Single Action" (x1011)
+ - "Reaction" (x515)
+ - "Two Actions" (x487)
+ - "Free Action" (x220)
+ - "Three Actions" (x138)
+ - "Single Action or Two Actions" (x8)
+ - "Two Actions or Three Actions" (x5)
+ - "Single Action to Three Actions" (x3)
+ - "Reaction or Two Actions" (x1)
+ 'category':
+ type: string
+ path: feat.category
+ is_null: false
+ values: 7125
+ different_values: 1 (all same)
+ variants: "feat" (x7125)
+ 'trait_markdown':
+ type: string
+ path: feat.trait_markdown
+ is_null: false
+ values: 7125
+ different_values: 1486
+ variants: [omitted]
+ 'type':
+ type: string
+ path: feat.type
+ is_null: false
+ values: 7125
+ different_values: 1 (all same)
+ variants: "Feat" (x7125)
+ [duration]:
+ type: integer
+ path: feat.duration
+ is_null: true
+ values: 1
+ different_values: 1 (all same)
+ variants: 60 (x1)
+ 'url':
+ type: string
+ path: feat.url
+ is_null: false
+ values: 7125
+ different_values: 7125 (all different)
+ variants: [omitted]
+ 'weakness':
+ type: object
+ path: feat.weakness
+ is_null: false
+ values: 7125
+ schema:
+ [archetype]:
+ type: array