diff --git a/data/monsters/celestial_wolf.json b/data/monsters/celestial_wolf.json index 799991b..f32af64 100644 --- a/data/monsters/celestial_wolf.json +++ b/data/monsters/celestial_wolf.json @@ -5,31 +5,31 @@ "abilities": { "str_score": 13, "dex_score": 15, - "con_score": 12, + "con_score": 15, "int_score": 2, "wis_score": 12, "cha_score": 6 }, - "hp_max": 15, + "hp_max": 13, "ac": { "total": 14, - "touch": 13, + "touch": 12, "flat_footed": 12 }, "bab": 1, "initiative_mod": 2, "speed_land_ft": 50, "saves": { - "fort": 4, + "fort": 5, "ref": 5, - "will": 2 + "will": 1 }, "attacks": [ { "id": "celestial_wolf:bite", "name": "Bite", "kind": "melee", - "attack_bonus": 3, + "attack_bonus": 2, "damage": [ { "formula": "1d6+1", @@ -46,6 +46,17 @@ "natural": true } ], + "dr": { + "amount": 5, + "bypass": ["magic"] + }, + "resistances": { + "acid": 5, + "cold": 5, + "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.", "source": "summon monster II", "features": [], "spells": [], diff --git a/tests/test_spells.py b/tests/test_spells.py index 74f7354..cb41770 100644 --- a/tests/test_spells.py +++ b/tests/test_spells.py @@ -833,7 +833,7 @@ class TestSummonMonster: assert len(summoned) == 1 assert summoned[0].side == "players" # Check it has correct HP - assert summoned[0].hp == 15 + assert summoned[0].hp == 13 # SRD wolf: 13 hp (2d8+4) # Check transcript mentions summon assert any("summon" in line.lower() for line in engine._transcript)