diff --git a/app/src/androidTest/java/dnd/jon/spellbook/InstrumentTest.java b/app/src/androidTest/java/dnd/jon/spellbook/InstrumentTest.java index 7d938a9a..f5922e2d 100755 --- a/app/src/androidTest/java/dnd/jon/spellbook/InstrumentTest.java +++ b/app/src/androidTest/java/dnd/jon/spellbook/InstrumentTest.java @@ -289,7 +289,7 @@ public void testParseSpellList() { try (ActivityScenario scenario = ActivityScenario.launch(MainActivity.class)) { scenario.onActivity(activity -> { final SpellbookViewModel viewModel = new ViewModelProvider(activity).get(SpellbookViewModel.class); - assertEquals(viewModel.getAllSpells().size(), 920); + assertEquals(viewModel.getAllSpells().size(), 941); }); } } @@ -303,7 +303,7 @@ public void testParseSpellListPt() { final Application application = activity.getApplication(); final SpellbookViewModel viewModel = new SpellbookViewModel(application); viewModel.updateSpellsForLocale(ptLocale); - assertEquals(viewModel.getAllSpells().size(), 920); + assertEquals(viewModel.getAllSpells().size(), 941); }); } } diff --git a/app/src/main/assets/Spells_en.json b/app/src/main/assets/Spells_en.json index e93427dc..06213b68 100644 --- a/app/src/main/assets/Spells_en.json +++ b/app/src/main/assets/Spells_en.json @@ -27700,5 +27700,33 @@ "range": "60 feet", "ruleset": "2024", "school": "Abjuration" + }, + { + "casting_time": "1 hour", + "classes": [ + "Artificer" + ], + "components": [ + "V", + "S", + "M" + ], + "desc": "You summon a special homunculus in an unoccupied space within range. This creature uses the Homunculus Servant stat block. If you already have a homunculus from this spell, the homunculus is replaced by the new one. You determine the homunculus's appearance, such as a mechanical-looking bird, winged vial, or miniature animate cauldron.\n\nCombat. The homunculus is an ally to you and your allies. In combat, it shares your Initiative count, but it takes its turn immediately after yours. It obeys your commands (no action required by you). If you don't issue any, it takes the Dodge action and uses its movement to avoid danger.", + "duration": "Instantaneous", + "higher_level": "Use the spell slot's level for the spell's level in the stat block.", + "id": 941, + "level": 2, + "locations": [ + { + "page": 21, + "sourcebook": "EFA" + } + ], + "material": "A gem worth 100+ gp", + "name": "Homunculus Servant", + "range": "10 feet", + "ritual": true, + "ruleset": "2024", + "school": "Conjuration" } ] diff --git a/app/src/main/assets/Spells_pt.json b/app/src/main/assets/Spells_pt.json index 17d10a46..3aa48fa0 100644 --- a/app/src/main/assets/Spells_pt.json +++ b/app/src/main/assets/Spells_pt.json @@ -26592,5 +26592,33 @@ "range": "18 metros", "ruleset": "2024", "school": "Abjuração" + }, + { + "casting_time": "1 hora", + "classes": [ + "Artífice" + ], + "components": [ + "V", + "S", + "M" + ], + "desc": "Você invoca um homúnculo especial em um espaço desocupado dentro do alcance. Essa criatura usa o bloco de estatísticas de Servo Homúnculo. Se você já tiver um homúnculo conjurado por esta magia, o homúnculo anterior é substituído pelo novo. Você determina a aparência do homúnculo, como um pássaro mecânico, um frasco alado ou um caldeirão animado em miniatura.\n\nCombate. O homúnculo é um aliado seu e de seus companheiros. Em combate, ele compartilha sua contagem de Iniciativa, mas age imediatamente após o seu turno. Ele obedece aos seus comandos (nenhuma ação é necessária de sua parte). Se você não lhe der nenhuma ordem, ele realiza a ação de Esquivar e usa seu movimento para evitar o perigo.", + "duration": "Instantânea", + "higher_level":"Utilize o nível do espaço de magia para determinar o nível da magia no bloco de estatísticas.", + "id": 941, + "level": 2, + "locations": [ + { + "page": 21, + "sourcebook": "EFA" + } + ], + "material": "Uma joia no valor de mais de 100 peças de ouro", + "name": "Servo Homúnculo", + "range": "3 metros", + "ritual": true, + "ruleset": "2024", + "school": "Conjuração" } ] \ No newline at end of file diff --git a/app/src/main/java/dnd/jon/spellbook/Source.java b/app/src/main/java/dnd/jon/spellbook/Source.java index ed5bce67..47fb0ec5 100755 --- a/app/src/main/java/dnd/jon/spellbook/Source.java +++ b/app/src/main/java/dnd/jon/spellbook/Source.java @@ -39,6 +39,7 @@ public class Source implements NameDisplayable { static final Source BOOK_OF_MT = new Source(R.string.bmt_name, R.string.bmt_code, "The Book of Many Things", "BMT", false); static final Source PLAYERS_HANDBOOK_2024 = new Source(R.string.phb_2024_name, R.string.phb_2024_code, "Player's Handbook (2024)", "PHB24", true); static final Source HEROES_OF_FAERUN = new Source(R.string.frhof_name, R.string.frhof_code, "Forgotten Realms: Heroes of Faerûn", "FRHF", false); + static final Source EBERRON_FORGE_ARTIFICER = new Source(R.string.efa_name, R.string.efa_code, "Eberron: Forge of the Artificer", "EFA", false); // Constructor private Source(int value, int displayNameID, int codeID, String internalName, String internalCode, boolean core, boolean created) { diff --git a/app/src/main/java/dnd/jon/spellbook/Spellbook.java b/app/src/main/java/dnd/jon/spellbook/Spellbook.java index 768995c7..c1588708 100755 --- a/app/src/main/java/dnd/jon/spellbook/Spellbook.java +++ b/app/src/main/java/dnd/jon/spellbook/Spellbook.java @@ -27,6 +27,7 @@ class Spellbook { static final Version V_3_7_0 = new Version(3, 7, 0); static final Version V_4_1_0 = new Version(4, 1, 0); static final Version V_4_5_0 = new Version(4, 5, 0); + static final Version V_4_6_0 = new Version(4, 6, 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 }; @@ -42,6 +43,7 @@ class Spellbook { put(V_3_7_0, Arrays.asList(Source.BOOK_OF_MT)); put(V_4_1_0, Arrays.asList(Source.PLAYERS_HANDBOOK_2024)); put(V_4_5_0, Arrays.asList(Source.HEROES_OF_FAERUN)); + put(V_4_6_0, Arrays.asList(Source.EBERRON_FORGE_ARTIFICER)); }}; static Collection newSourcesForVersion(Version version) { diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml index 2b76c6eb..799fc8bd 100755 --- a/app/src/main/res/values-pt/strings.xml +++ b/app/src/main/res/values-pt/strings.xml @@ -424,6 +424,7 @@ Sigil e as Terras Distantes O Livro de Muitas Coisas Reinos Esquecidos: Heróis de Faerûn + Eberron: A Forja do Artífice LDJ14 @@ -443,6 +444,7 @@ STD LMC REHF + EFA Nome diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index ddf4930e..65c59bbd 100755 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -426,6 +426,7 @@ Sigil and the Outlands The Book of Many Things Forgotten Realms: Heroes of Faerûn + Eberron: Forge of the Artificer PHB14 @@ -445,6 +446,7 @@ SO BMT FRHF + EFA Name