From cc1a407e9a83346358ed2a8ef2debb92781a9c3d Mon Sep 17 00:00:00 2001 From: Carifio24 Date: Sat, 27 Apr 2024 03:55:53 -0400 Subject: [PATCH] Add spells from The Book of Many Things. --- Data/Spells.json | 104 +++++++++++++++++++++++++++++++++++++ Spellbook/Sourcebook.swift | 7 ++- 2 files changed, 109 insertions(+), 2 deletions(-) diff --git a/Data/Spells.json b/Data/Spells.json index 04c19c6..99728c9 100644 --- a/Data/Spells.json +++ b/Data/Spells.json @@ -16385,5 +16385,109 @@ "page": 12 } ] + }, + { + "casting_time": "1 action", + "classes": [ + "Bard", + "Sorcerer", + "Warlock", + "Wizard" + ], + "components": [ + "V", + "S", + "M" + ], + "concentration": false, + "desc": "You whisper magical words that antagonize one creature of your choice within range. The target must make a Wisdom saving throw. On a failed save, the target takes 4d4 psychic damage and must immediately use its reaction to make a melee attack against another creature of your choice that you can see. If the target can't make this attack (for example, because there is no one within its reach or because its reaction is unavailable), the target instead has disadvantage on the next attack roll it makes before the start of your next turn. On a successful save, the target takes half as much damage only.", + "duration": "Instantaneous", + "higher_level": "When you cast this spell using a spell slot of 4th level or higher, the damage increases by 1d4 for each slot level above 3rd.", + "id": 528, + "level": 3, + "material": "A playing card depicting a rogue.", + "name": "Antagonize", + "range": "30 feet", + "ritual": false, + "school": "Enchantment", + "subclasses": [ + "Arcane Trickster", + "Eldritch Knight" + ], + "locations": [ + { + "sourcebook": "BMT", + "page": 50 + } + ] + }, + { + "casting_time": "1 action", + "classes": [ + "Sorcerer", + "Warlock", + "Wizard" + ], + "components": [ + "V", + "S", + "M" + ], + "concentration": true, + "desc": "You call forth a spirit that embodies death. The spirit manifests in an unoccupied space you can see within range and uses the reaper spirit stat block. The spirit disappears when it is reduced to 0 hit points or when the spell ends.\n\nThe spirit is an ally to you and your companions. In combat, the spirit shares your initiative count and takes its turn immediately after yours. It obeys your verbal commands (no action required by you). If you don't issue the spirit any commands, it takes the Dodge action and uses its movement to avoid danger.", + "duration": "Up to 1 hour", + "higher_level": "When you cast this spell using a spell slot of 5th level or higher, use the higher level wherever the spell's level appears in the reaper spirit stat block.", + "id": 529, + "level": 4, + "material": "A gilded playing card worth at least 400 gp and depicting an avatar of death.", + "name": "Spirit of Death", + "range": "60 feet", + "ritual": false, + "school": "Necromancy", + "subclasses": [ + "Arcane Trickster", + "Eldritch Knight" + ], + "locations": [ + { + "sourcebook": "BMT", + "page": 50 + } + ] + }, + { + "casting_time": "1 action", + "classes": [ + "Bard", + "Sorcerer", + "Warlock", + "Wizard" + ], + "components": [ + "V", + "S", + "M" + ], + "concentration": false, + "desc": "You spray a 15-foot cone of spectral cards. Each creature in that area must make a Dexterity saving throw. On a failed save, a creature takes 2d10 force damage and has the blinded condition until the end of its next turn. On a successful save, a creature takes half as much damage only.", + "duration": "Instantaneous", + "higher_level": "When you cast this spell using a spell slot of 3rd level or higher, the damage increases by 1d10 for each slot level above 2nd.", + "id": 530, + "level": 2, + "material": "A deck of cards.", + "name": "Spray of Cards", + "range": "Self (15-foot cone)", + "ritual": false, + "school": "Conjuration", + "subclasses": [ + "Arcane Trickster", + "Eldritch Knight" + ], + "locations": [ + { + "sourcebook": "BMT", + "page": 50 + } + ] } ] diff --git a/Spellbook/Sourcebook.swift b/Spellbook/Sourcebook.swift index 9e474e8..22bbddd 100644 --- a/Spellbook/Sourcebook.swift +++ b/Spellbook/Sourcebook.swift @@ -1,5 +1,5 @@ enum Sourcebook: Int, NameConstructible { - case PlayersHandbook=0, XanatharsGTE, SwordCoastAG, TashasCOE, AcquisitionsInc, LostLabKwalish, RimeOTFrostmaiden, ExplorersGTW, FizbansTOD, StrixhavenCOC, AstralAG, TalDoreiCSR, SigilOutlands + case PlayersHandbook=0, XanatharsGTE, SwordCoastAG, TashasCOE, AcquisitionsInc, LostLabKwalish, RimeOTFrostmaiden, ExplorersGTW, FizbansTOD, StrixhavenCOC, AstralAG, TalDoreiCSR, SigilOutlands, BookOfMT static let coreSourcebooks = [ PlayersHandbook, XanatharsGTE, TashasCOE ] @@ -33,6 +33,8 @@ enum Sourcebook: Int, NameConstructible { return "Tal'Dorei Campaign Setting Reborn" case .SigilOutlands: return "Sigil and the Outlands" + case .BookOfMT: + return "The Book of Many Things" } } @@ -49,7 +51,8 @@ enum Sourcebook: Int, NameConstructible { StrixhavenCOC: "scc", AstralAG: "aag", TalDoreiCSR: "tdcsr", - SigilOutlands: "so" + SigilOutlands: "so", + BookOfMT: "bmt", ] var code: String {