feat(rules): SRD Mage Armor spell + non-stacking armor bonus type
SRD spells/mage-armor.md: 'An invisible but tangible field of force surrounds the subject of a mage armor spell, providing a +4 armor bonus to AC' - 'School conjuration (creation) [force]', level 1, 'Casting Time 1 standard action', 'Range touch', 'Duration 1 hour/level (D)', 'Spell Resistance no'. - data/spells/mage_armor.json: buff +4 armor to AC, 600 rounds (1 hour/level modeled fixed, the shield.json convention). Description documents the known simplification: the engine bakes worn armor into the AC total and cannot see it, so the armor bonus stacks additively with that baked value (two mage armors still do not stack). - effects.py: 'armor' added to BonusType; absent from _STACKING_TYPES it behaves as a keep-the-highest type (verified by resolve_modifiers tests). - Spell-count pins 107 -> 108 (test_runner_spells, batch3, test_spells) and the README references. - Golden transcript untouched (buff branch only fires when no offensive spell is selected; the lich still opens with Magic Missile).
This commit is contained in:
@@ -0,0 +1,20 @@
|
||||
{
|
||||
"name": "Mage Armor",
|
||||
"level": 1,
|
||||
"school": "conjuration",
|
||||
"range": "touch",
|
||||
"save": "none",
|
||||
"base_dc": 10,
|
||||
"cast_time": "standard",
|
||||
"spell_resistance": false,
|
||||
"effects": [
|
||||
{
|
||||
"type": "buff",
|
||||
"modifiers": [
|
||||
{ "target": "ac", "value": 4, "bonus_type": "armor" }
|
||||
],
|
||||
"duration_rounds": 600
|
||||
}
|
||||
],
|
||||
"description": "An invisible but tangible field of force surrounds the subject, providing a +4 armor bonus to AC (SRD mage armor: school conjuration (creation) [force], range touch, duration 1 hour/level (modeled as a fixed 600 rounds), spell resistance: no; Will negates (harmless) is not modeled - the engine only self/target-buffs willing recipients). Known simplification: the engine bakes worn armor into the AC total of the JSON and cannot see it, so this armor bonus stacks additively with that baked-in armor value instead of replacing it; two mage armors still do not stack with each other (armor is a non-stacking bonus type)."
|
||||
}
|
||||
Reference in New Issue
Block a user