Skip to content

Commit

Permalink
Merge pull request #68 from Carifio24/book-of-many-things
Browse files Browse the repository at this point in the history
The Book of Many Things content
  • Loading branch information
Carifio24 authored Apr 27, 2024
2 parents 04aa99f + d2121b2 commit 94e4388
Show file tree
Hide file tree
Showing 8 changed files with 430 additions and 3 deletions.
104 changes: 104 additions & 0 deletions app/src/main/assets/Spells_en.json
Original file line number Diff line number Diff line change
Expand Up @@ -16414,5 +16414,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
}
]
}
]
104 changes: 104 additions & 0 deletions app/src/main/assets/Spells_pt.json
Original file line number Diff line number Diff line change
Expand Up @@ -15306,5 +15306,109 @@
"page": 12
}
]
},
{
"casting_time": "1 ação",
"classes": [
"Bardo",
"Feiticeiro",
"Bruxo",
"Mago"
],
"components": [
"V",
"S",
"M"
],
"concentration": false,
"desc": "Você sussurra palavras mágicas que antagonizam uma criatura de sua escolha dentro do alcance. O alvo deve fazer um teste de resistência de Sabedoria. Se falhar na resistência, o alvo sofre 4d4 de dano psíquico e deve usar imediatamente sua reação para realizar um ataque corpo a corpo contra outra criatura de sua escolha que você possa ver. Se o alvo não puder realizar este ataque (por exemplo, porque não há ninguém ao seu alcance ou porque sua reação não está disponível), o alvo terá desvantagem na próxima jogada de ataque que realizar antes do início do seu próximo turno. Em um teste bem-sucedido, o alvo sofre apenas metade do dano.",
"duration": "Instantânea",
"higher_level": "Quando você conjura esta magia usando um espaço de magia de 4º nível ou superior, o dano aumenta em 1d4 para cada nível do espaço acima do 3º.",
"id": 528,
"level": 3,
"material": "Uma carta de baralho representando um ladino",
"name": "Antagonizar",
"range": "9 metros",
"ritual": false,
"school": "Encantamento",
"subclasses": [
"Arcane Trickster",
"Eldritch Knight"
],
"locations": [
{
"sourcebook": "LMC",
"page": 50
}
]
},
{
"casting_time": "1 ação",
"classes": [
"Feiticeiro",
"Bruxo",
"Mago"
],
"components": [
"V",
"S",
"M"
],
"concentration": true,
"desc": "Você invoca um espírito que incorpora a morte. O espírito se manifesta em um espaço desocupado que você pode ver dentro do alcance e usa o bloco de estatísticas do espírito ceifador. O espírito desaparece quando é reduzido a 0 pontos de vida ou quando o feitiço termina.\n\nO espírito é um aliado de você e de seus companheiros. Em combate, o espírito compartilha sua contagem de iniciativa e executa seu turno imediatamente após o seu. Ele obedece aos seus comandos verbais (nenhuma ação exigida por você). Se você não emitir nenhum comando ao espírito, ele realizará a ação Esquivar e usará seu movimento para evitar o perigo." ,
"duration": "Até 1 minuto",
"higher_level": "Quando você conjurar esta magia usando um espaço de magia de 5º nível ou superior, use o nível mais alto onde quer que o nível da magia apareça no bloco de estatísticas do espírito ceifador.",
"id": 529,
"level": 4,
"material": "Uma carta de baralho dourada valendo pelo menos 400 PO e representando um avatar da morte.",
"name": "Espírito da Morte",
"range": "18 metros",
"ritual": false,
"school": "Necromancia",
"subclasses": [
"Arcane Trickster",
"Eldritch Knight"
],
"locations": [
{
"sourcebook": "LMC",
"page": 50
}
]
},
{
"casting_time": "1 ação",
"classes": [
"Bardo",
"Feiticeiro",
"Bruxo",
"Mago"
],
"components": [
"V",
"S",
"M"
],
"concentration": false,
"desc": "Você pulveriza um cone de cartas espectrais de 4,5 metros. Cada criatura naquela área deve fazer um teste de resistência de Destreza. Se falhar na resistência, a criatura sofre 2d10 de dano de força e fica cega até o final do próximo turno. Em um teste bem-sucedido, a criatura sofre apenas metade do dano.",
"duration": "Instantânea",
"higher_level": "Quando você conjura esta magia usando um espaço de magia de 3º nível ou superior, o dano aumenta em 1d10 para cada nível do espaço acima do 2º.",
"id": 530,
"level": 2,
"material": "Um baralho de cartas.",
"name": "Spray de Cartas",
"range": "Pessoal (cone de 4,5 metros)",
"ritual": false,
"school": "Conjuração",
"subclasses": [
"Arcane Trickster",
"Eldritch Knight"
],
"locations": [
{
"sourcebook": "LMC",
"page": 50
}
]
}
]
1 change: 1 addition & 0 deletions app/src/main/java/dnd/jon/spellbook/Source.java
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ public class Source implements NameDisplayable {
static final Source GUILDMASTERS_GTR = new Source(R.string.ggr_name, R.string.ggr_code, "Guildmaster's Guide to Ravnica", "GGR", false);
static final Source TALDOREI_CSR = new Source(R.string.tdcsr_name, R.string.tdcsr_code, "Tal'Dorei Campaign Setting Reborn", "TDCSR", false);
static final Source SIGIL_OUTLANDS = new Source(R.string.so_name, R.string.so_code, "Sigil and the Outlands", "SO", false);
static final Source BOOK_OF_MT = new Source(R.string.bmt_name, R.string.bmt_code, "The Book of Many Things", "BMT", false);

// Constructor
private Source(int value, int displayNameID, int codeID, String internalName, String internalCode, boolean core, boolean created) {
Expand Down
8 changes: 5 additions & 3 deletions app/src/main/java/dnd/jon/spellbook/Spellbook.java
Original file line number Diff line number Diff line change
Expand Up @@ -23,10 +23,11 @@ class Spellbook {
static final Version V_3_0_4 = new Version(3,0,4);
static final Version V_3_0_6 = new Version(3, 0, 6);
static final Version V_3_5_0 = new Version(3, 5, 0);
static final Version V_3_7_0 = new Version(3, 7, 0);

//static final Version[] VERSIONS = { V_2_0_0, V_2_10_0, V_2_11_0, V_2_11_0, V_2_12_0, V_2_13_0,
// V_3_0_4, V_3_0_6 };
static private final Map<Version, Collection<Source>> SOURCES_NEW_IN_VERSION = new HashMap<Version, Collection<Source>>() {{
// static final Version[] VERSIONS = { V_2_0_0, V_2_10_0, V_2_11_0, V_2_11_0, V_2_12_0, V_2_13_0,
// V_3_0_4, V_3_0_6 };
static private final Map<Version, Collection<Source>> SOURCES_NEW_IN_VERSION = new HashMap<>() {{
put(V_2_0_0, Arrays.asList(Source.PLAYERS_HANDBOOK, Source.XANATHARS_GTE, Source.SWORD_COAST_AG));
put(V_2_10_0, Arrays.asList(Source.TASHAS_COE));
put(V_2_11_0, Arrays.asList(Source.ACQUISITIONS_INC, Source.EXPLORERS_GTW, Source.LOST_LAB_KWALISH, Source.RIME_FROSTMAIDEN));
Expand All @@ -35,6 +36,7 @@ class Spellbook {
put(V_3_0_4, Arrays.asList(Source.ASTRAL_AG));
put(V_3_0_6, Arrays.asList(Source.GUILDMASTERS_GTR));
put(V_3_5_0, Arrays.asList(Source.TALDOREI_CSR, Source.SIGIL_OUTLANDS));
put(V_3_7_0, Arrays.asList(Source.BOOK_OF_MT));
}};

static Collection<Source> newSourcesForVersion(Version version) {
Expand Down
2 changes: 2 additions & 0 deletions app/src/main/res/values-pt/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -388,6 +388,7 @@
<string name="aag_name">Guia do Aventureiro Astral</string>
<string name="tdcsr_name">Cenário de Campanha Tal\'Dorei: Renascido</string>
<string name="so_name">Sigil e as Terras Distantes</string>
<string name="bmt_name">O Livro de Muitas Coisas</string>

<!-- Sourcebook codes -->
<string name="phb_code">LDJ</string>
Expand All @@ -404,6 +405,7 @@
<string name="aag_code">GAA</string>
<string name="tdcsr_code">CCTDR</string>
<string name="so_code">STD</string>
<string name="bmt_code">LMC</string>

<!-- Sort field names (that weren't already used elsewhere) -->
<string name="name">Nome</string>
Expand Down
2 changes: 2 additions & 0 deletions app/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -389,6 +389,7 @@
<string name="aag_name">Astral Adventurer\'s Guide</string>
<string name="tdcsr_name">Tal\'Dorei Campaign Setting Reborn</string>
<string name="so_name">Sigil and the Outlands</string>
<string name="bmt_name">The Book of Many Things</string>

<!-- Sourcebook codes -->
<string name="phb_code">PHB</string>
Expand All @@ -405,6 +406,7 @@
<string name="aag_code">AAG</string>
<string name="tdcsr_code">TDCSR</string>
<string name="so_code">SO</string>
<string name="bmt_code">BMT</string>

<!-- Sort field names (that weren't already used elsewhere) -->
<string name="name">Name</string>
Expand Down
106 changes: 106 additions & 0 deletions spells/BMT_spells.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
[
{
"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
}
]
}
]
Loading

0 comments on commit 94e4388

Please sign in to comment.