feat(rules): add alignment field to Combatant with axis gating flags

Adds the PF1e two-axis alignment code (LG/NG/CG/LN/N/CN/LE/NE/CE,
default N) to the Combatant model with a strict validator, derived
is_lawful/is_chaotic/is_good/is_evil properties, exposure in the
observation snapshot, and alignment values for all monsters and PCs
sourced from the bestiary KB and the Foundry sheets.
This commit is contained in:
2026-09-20 11:49:04 +02:00
parent 40088e1869
commit f9e51e377a
20 changed files with 265 additions and 2 deletions
+2 -1
View File
@@ -1,5 +1,6 @@
{
"name": "Celestial Wolf",
"alignment": "NG",
"level": 2,
"size": "Medium",
"abilities": {
@@ -56,7 +57,7 @@
"electricity": 5
},
"spell_resistance": 6,
"notes": "SRD Bestiary wolf (2d8+4 hp 13, AC 14/touch 12/flat 12, Fort +5, Will +1, bite +2 1d6+1 plus trip, Str 13 Dex 15 Con 15) + celestial template. Encoded from the template: DR 5/magic, energy resistance acid/cold/electricity 5, SR 6 (CR 1 + 5). Not encodable in this model: smite evil 2/day (+2 damage vs evil), the bite's free trip on hit (the engine has trip only as a standard-action maneuver, no auto-trip attack qualifier), and the weapon model has no magic property so no equipment bypasses the DR 5/magic (correct for mundane weapons). Summoning scaling (energy resistance +2 and SR +5 per summon spell level above 2nd) is not modeled; this sheet is the summon monster II baseline.",
"notes": "SRD Bestiary wolf (2d8+4 hp 13, AC 14/touch 12/flat 12, Fort +5, Will +1, bite +2 1d6+1 plus trip, Str 13 Dex 15 Con 15) + celestial template. Encoded from the template: DR 5/magic, energy resistance acid/cold/electricity 5, SR 6 (CR 1 + 5). Not encodable in this model: smite evil 2/day (+2 damage vs evil), the bite's free trip on hit (the engine has trip only as a standard-action maneuver, no auto-trip attack qualifier), and the weapon model has no magic property so no equipment bypasses the DR 5/magic (correct for mundane weapons). Summoning scaling (energy resistance +2 and SR +5 per summon spell level above 2nd) is not modeled; this sheet is the summon monster II baseline. Alignment inferred: SRD celestial template = any good; NG chosen for the good axis with neutral law axis",
"source": "summon monster II",
"features": [],
"spells": [],
+1
View File
@@ -1,5 +1,6 @@
{
"name": "Giant Belostomatid",
"alignment": "N",
"level": 3,
"size": "Large",
"cr": "3",
+1
View File
@@ -1,5 +1,6 @@
{
"name": "Goblin",
"alignment": "NE",
"level": 1,
"size": "Small",
"cr": "1/3",
+1
View File
@@ -1,5 +1,6 @@
{
"name": "Lich",
"alignment": "NE",
"level": 11,
"size": "Medium",
"creature_type": "undead",
+1
View File
@@ -1,5 +1,6 @@
{
"name": "Orc",
"alignment": "CE",
"level": 1,
"size": "Medium",
"cr": "1/3",
+1
View File
@@ -1,5 +1,6 @@
{
"name": "Thrune Agent",
"alignment": "LE",
"level": 8,
"size": "Medium",
"creature_type": "living",
+1
View File
@@ -1,5 +1,6 @@
{
"name": "Esha Randu",
"alignment": "LG",
"level": 4,
"size": "Medium",
"abilities": {
+2 -1
View File
@@ -1,5 +1,6 @@
{
"name": "Esha's Mount",
"alignment": "N",
"level": 4,
"size": "Large",
"abilities": {
@@ -44,7 +45,7 @@
"natural": true
}
],
"notes": "Light-horse mount shared with Esha's sheet: hooves are 1d4 bludgeoning (SRD Bestiary horse, light - 2 hooves 1d4), natural attacks. No bite encoded: the SRD light horse has no bite attack and the Foundry sheet lists no mount bite (unlike Jeanne's sheet, which does).",
"notes": "Light-horse mount shared with Esha's sheet: hooves are 1d4 bludgeoning (SRD Bestiary horse, light - 2 hooves 1d4), natural attacks. No bite encoded: the SRD light horse has no bite attack and the Foundry sheet lists no mount bite (unlike Jeanne's sheet, which does). Alignment inferred: SRD animal (horse) is typically neutral; no alignment on the sheet",
"source": "fiches_personnages/esha_sheet.json (mount)",
"features": [
"Combat Reflexes",
+1
View File
@@ -1,5 +1,6 @@
{
"name": "Harvie",
"alignment": "N",
"level": 2,
"size": "Small",
"abilities": {
+1
View File
@@ -1,5 +1,6 @@
{
"name": "Ierlieth",
"alignment": "CN",
"level": 4,
"size": "Tiny",
"abilities": {
+1
View File
@@ -1,5 +1,6 @@
{
"name": "Jeanne",
"alignment": "N",
"level": 4,
"size": "Large",
"abilities": {
+1
View File
@@ -1,5 +1,6 @@
{
"name": "Misty",
"alignment": "NE",
"level": 4,
"size": "Medium",
"abilities": {
+1
View File
@@ -1,5 +1,6 @@
{
"name": "Nairda Guisenda",
"alignment": "CN",
"level": 4,
"size": "Medium",
"abilities": {
+1
View File
@@ -1,5 +1,6 @@
{
"name": "Oni Triumvir",
"alignment": "NG",
"level": 4,
"size": "Medium",
"abilities": {
+1
View File
@@ -1,5 +1,6 @@
{
"name": "Tammara Cailean",
"alignment": "CG",
"level": 4,
"size": "Medium",
"abilities": {