feat(rules): conform bulls strength, bears endurance and shield to the SRD

Bull's Strength now grants the SRD +4 enhancement bonus to Strength as
+2 melee attack, +2 melee damage and +2 CMB (three modifiers instead of
the previous +1/+1 approximation). Shield now uses a real shield bonus
type (+4 AC) instead of approximating it as deflection: the engine's
BonusType literal and stacking docs gain the shield type, which stays
out of the CMD bonus list (SRD Combat Maneuver Defense). Bear's
Endurance keeps its +2 Fortitude / +2 hp per HD and its description now
cites the SRD and flags the hp modifier as informational. Golden
transcripts updated: the buff log reports 3 mods and Tammara's pistol
attacks gain the extra +1 enhancement (d20=10+9-6=15).

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
This commit is contained in:
2026-09-13 17:39:52 +02:00
parent b84238792c
commit 0c141414a9
6 changed files with 29 additions and 21 deletions
+11 -11
View File
@@ -64,28 +64,28 @@ class TestGoldenCombats:
assert result.transcript == (
"initiative: tammara d20=15+7=22",
"initiative: goblin d20=10+6=16",
("round 1 tammara: cast Bull's Strength vs tammara DC15 SAVED -> buff 2 mods (60r) "
("round 1 tammara: cast Bull's Strength vs tammara DC15 SAVED -> buff 3 mods (60r) "
"(36->36)"),
"round 1 goblin: short bow vs tammara d20=15+4-2=17 AC 20 -> MISS",
("round 2 tammara: cast Bull's Strength vs tammara DC15 SAVED -> buff 2 mods (60r) "
("round 2 tammara: cast Bull's Strength vs tammara DC15 SAVED -> buff 3 mods (60r) "
"(36->36)"),
"round 2 goblin: short bow vs tammara d20=15+4-2=17 AC 20 -> MISS",
("round 3 tammara: cast Bull's Strength vs tammara DC15 SAVED -> buff 2 mods (60r) "
("round 3 tammara: cast Bull's Strength vs tammara DC15 SAVED -> buff 3 mods (60r) "
"(36->36)"),
"round 3 goblin: short bow vs tammara d20=15+4-2=17 AC 20 -> MISS",
"round 4 tammara: Braises d'Automne (pistolet ?) vs goblin d20=10+9-6=14 AC 16 -> MISS",
"round 4 tammara: Braises d'Automne (pistolet ?) vs goblin d20=10+9-6=15 AC 16 -> MISS",
"round 4 goblin: short bow vs tammara d20=15+4-2=17 AC 20 -> MISS",
"round 5 tammara: Braises d'Automne (pistolet ?) vs goblin d20=10+9-6=14 AC 16 -> MISS",
"round 5 tammara: Braises d'Automne (pistolet ?) vs goblin d20=10+9-6=15 AC 16 -> MISS",
"round 5 goblin: short bow vs tammara d20=15+4-2=17 AC 20 -> MISS",
"round 6 tammara: Braises d'Automne (pistolet ?) vs goblin d20=10+9-6=14 AC 16 -> MISS",
"round 6 tammara: Braises d'Automne (pistolet ?) vs goblin d20=10+9-6=15 AC 16 -> MISS",
"round 6 goblin: short bow vs tammara d20=15+4-2=17 AC 20 -> MISS",
"round 7 tammara: Braises d'Automne (pistolet ?) vs goblin d20=10+9-6=14 AC 16 -> MISS",
"round 7 tammara: Braises d'Automne (pistolet ?) vs goblin d20=10+9-6=15 AC 16 -> MISS",
"round 7 goblin: short bow vs tammara d20=15+4-2=17 AC 20 -> MISS",
"round 8 tammara: Braises d'Automne (pistolet ?) vs goblin d20=10+9-6=14 AC 16 -> MISS",
"round 8 tammara: Braises d'Automne (pistolet ?) vs goblin d20=10+9-6=15 AC 16 -> MISS",
"round 8 goblin: short bow vs tammara d20=15+4-2=17 AC 20 -> MISS",
"round 9 tammara: Braises d'Automne (pistolet ?) vs goblin d20=10+9-6=14 AC 16 -> MISS",
"round 9 tammara: Braises d'Automne (pistolet ?) vs goblin d20=10+9-6=15 AC 16 -> MISS",
"round 9 goblin: short bow vs tammara d20=15+4-2=17 AC 20 -> MISS",
("round 10 tammara: Braises d'Automne (pistolet ?) vs goblin d20=10+9-6=14 AC 16 "
("round 10 tammara: Braises d'Automne (pistolet ?) vs goblin d20=10+9-6=15 AC 16 "
"-> MISS"),
"round 10 goblin: short bow vs tammara d20=15+4-2=17 AC 20 -> MISS",
"battle over: draw after 10 rounds",
@@ -106,7 +106,7 @@ class TestGoldenCombats:
assert result.transcript == (
"initiative: tammara d20=15+7=22",
"initiative: lich d20=10+6=16",
("round 1 tammara: cast Bull's Strength vs tammara DC15 SAVED -> buff 2 mods (60r) "
("round 1 tammara: cast Bull's Strength vs tammara DC15 SAVED -> buff 3 mods (60r) "
"(36->36)"),
"round 1 lich: cast Magic Missile vs tammara DC16 NO SAVE -> 43 damage (36->-7)",
"battle over: monsters win in 1 rounds",