diff --git a/src/api/java/com/github/minecraftschurlimods/arsmagicalegacy/api/event/SpellEvent.java b/src/api/java/com/github/minecraftschurlimods/arsmagicalegacy/api/event/SpellEvent.java index 1553b133f..c7371de5e 100644 --- a/src/api/java/com/github/minecraftschurlimods/arsmagicalegacy/api/event/SpellEvent.java +++ b/src/api/java/com/github/minecraftschurlimods/arsmagicalegacy/api/event/SpellEvent.java @@ -3,6 +3,7 @@ import com.github.minecraftschurlimods.arsmagicalegacy.api.spell.ISpell; import com.github.minecraftschurlimods.arsmagicalegacy.api.spell.ISpellComponent; import com.github.minecraftschurlimods.arsmagicalegacy.api.spell.ISpellModifier; +import com.github.minecraftschurlimods.arsmagicalegacy.api.spell.ISpellPartStat; import com.github.minecraftschurlimods.arsmagicalegacy.api.util.ItemFilter; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.phys.HitResult; @@ -247,4 +248,22 @@ public ReagentCost(LivingEntity entity, ISpell spell, List reagents) this.reagents = new ArrayList<>(reagents); } } + + /** + * Event to modify the value of spell stats. + * This is called whenever a stat modifier is checked, meaning that it may be called multiple times per spell cast. + * This is called after spell modifiers have already been considered, meaning that the modified value already contains the modifier values. + */ + public static final class ModifyStats extends SpellEvent { + public final ISpellPartStat stat; + public final float base; + public float modified; + + public ModifyStats(LivingEntity entity, ISpell spell, ISpellPartStat stat, float base, float modified) { + super(entity, spell); + this.stat = stat; + this.base = base; + this.modified = modified; + } + } } diff --git a/src/data/java/com/github/minecraftschurlimods/arsmagicalegacy/data/AMEnglishLanguageProvider.java b/src/data/java/com/github/minecraftschurlimods/arsmagicalegacy/data/AMEnglishLanguageProvider.java index 261c1f2e7..492749842 100644 --- a/src/data/java/com/github/minecraftschurlimods/arsmagicalegacy/data/AMEnglishLanguageProvider.java +++ b/src/data/java/com/github/minecraftschurlimods/arsmagicalegacy/data/AMEnglishLanguageProvider.java @@ -20,6 +20,7 @@ import com.github.minecraftschurlimods.arsmagicalegacy.common.init.AMSounds; import com.github.minecraftschurlimods.arsmagicalegacy.common.init.AMSpellParts; import com.github.minecraftschurlimods.arsmagicalegacy.common.init.AMStats; +import com.github.minecraftschurlimods.arsmagicalegacy.common.init.AMTalents; import com.github.minecraftschurlimods.arsmagicalegacy.common.item.SpellItem; import com.github.minecraftschurlimods.arsmagicalegacy.common.util.TranslationConstants; import com.github.minecraftschurlimods.arsmagicalegacy.server.commands.CommandTranslations; @@ -215,38 +216,38 @@ protected void addTranslations() { entityIdTranslation(AMEntities.MAGE); entityIdTranslation(AMEntities.MANA_CREEPER); entityIdTranslation(AMEntities.MANA_VORTEX); - abilityIdTranslation(AMAbilities.FIRE_RESISTANCE, "After using fire spells for some time, you develop some resistance to fire. As you delve deeper, you notice the resistance getting stronger and stronger.$(br2)Affinity: Fire$(br)Range: 1 - 100 %"); - abilityIdTranslation(AMAbilities.FIRE_PUNCH, "Becoming part fire, enemies you hit now get set on fire.$(br2)Affinity: Fire$(br)Range: 100 %"); - addAbility(AMAbilities.WATER_DAMAGE_FIRE, "Water Damage (Fire)", "Having fun with fire magic has made you less suitable for water. You will take damage in water, though not enough to kill you on its own.$(br2)Affinity: Fire$(br)Range: 50 - 100 %"); - abilityIdTranslation(AMAbilities.SWIM_SPEED, "After using water spells for some time, you develop better swimming skills. As you delve deeper, you notice your speed in water getting faster and faster.$(br2)Affinity: Water$(br)Range: 1 - 100 %"); - abilityIdTranslation(AMAbilities.ENDERMAN_THORNS, "Becoming part water, enderman that hit you now take damage themselves.$(br2)Affinity: Water$(br)Range: 100 %"); - addAbility(AMAbilities.NETHER_DAMAGE_WATER, "Nether Damage (Water)", "Having fun with water magic has made you less suitable for fire. You will take damage in the nether, though not enough to kill you on its own.$(br2)Affinity: Water$(br)Range: 50 - 100 %"); - abilityIdTranslation(AMAbilities.RESISTANCE, "After using earth spells for some time, you develop some physical resistance. As you delve deeper, you notice the resistance getting stronger and stronger.$(br2)Affinity: Earth$(br)Range: 1 - 100 %"); - abilityIdTranslation(AMAbilities.HASTE, "After using earth spells for some time, you develop better block breaking skills. As you delve deeper, you notice that speed getting faster and faster.$(br2)Affinity: Earth$(br)Range: 1 - 100 %"); - abilityIdTranslation(AMAbilities.FALL_DAMAGE, "Having fun with earth magic has made you heavier. You take more fall damage.$(br2)Affinity: Earth$(br)Range: 50 - 100 %"); - abilityIdTranslation(AMAbilities.JUMP_BOOST, "After using air spells for some time, you develop better jumping skills. As you delve deeper, you notice your jump strength getting stronger and stronger.$(br2)Affinity: Air$(br)Range: 1 - 100 %"); - abilityIdTranslation(AMAbilities.FEATHER_FALLING, "After using air spells for some time, you develop better landing skills. As you delve deeper, you notice your fall damage taken getting weaker and weaker.$(br2)Affinity: Air$(br)Range: 1 - 100 %"); - abilityIdTranslation(AMAbilities.GRAVITY, "Having fun with air magic has made you accidentally bend gravity. You fall a lot faster.$(br2)Affinity: Air$(br)Range: 50 - 100 %"); - abilityIdTranslation(AMAbilities.FROST_PUNCH, "After using ice spells for some time, you develop a frost punch, slowing your enemies. As you delve deeper, you notice the frost getting stronger and stronger.$(br2)Affinity: Ice$(br)Range: 1 - 100 %"); - abilityIdTranslation(AMAbilities.FROST_WALKER, "Becoming part ice, water now freezes under your feet.$(br2)Affinity: Ice$(br)Range: 100 %"); - abilityIdTranslation(AMAbilities.SLOWNESS, "Having fun with ice magic has made you shiver. You move slower.$(br2)Affinity: Ice$(br)Range: 50 - 100 %"); - abilityIdTranslation(AMAbilities.SPEED, "After using lightning spells for some time, you develop better running skills. As you delve deeper, you notice your speed becoming faster and faster.$(br2)Affinity: Lightning$(br)Range: 1 - 100 %"); - abilityIdTranslation(AMAbilities.STEP_ASSIST, "Becoming part lightning, you are now able to step up 1-block slopes.$(br2)Affinity: Lightning$(br)Range: 100 %"); - addAbility(AMAbilities.WATER_DAMAGE_LIGHTNING, "Water Damage (Lightning)", "Having fun with lightning magic has made you less suitable for water. You will take damage in water, though not enough to kill you on its own.$(br2)Affinity: Lightning$(br)Range: 50 - 100 %"); - abilityIdTranslation(AMAbilities.SATURATION, "After using nature spells for some time, you feel nourished. As you delve deeper, you notice nourishment getting stronger and stronger.$(br2)Affinity: Nature$(br)Range: 1 - 100 %"); - abilityIdTranslation(AMAbilities.THORNS, "Becoming one with nature, enemies that hit you now take a bit of damage themselves.$(br2)Affinity: Nature$(br)Range: 100 %"); - addAbility(AMAbilities.NETHER_DAMAGE_NATURE, "Nether Damage (Nature)", "Having fun with nature magic has made you less suitable for fire. You will take damage in the nether, though not enough to kill you on its own.$(br2)Affinity: Nature$(br)Range: 50 - 100 %"); - abilityIdTranslation(AMAbilities.SMITE, "After using life spells for some time, you feel an urge to slay the undead. As you delve deeper, you notice your damage towards undeads getting stronger and stronger.$(br2)Affinity: Life$(br)Range: 1 - 100 %"); - abilityIdTranslation(AMAbilities.REGENERATION, "Becoming one with life, you get a permanent regeneration effect.$(br2)Affinity: Life$(br)Range: 100 %"); - abilityIdTranslation(AMAbilities.NAUSEA, "Having fun with life magic has made you less suitable for killing. You will receive a nausea effect when killing a non-undead enemy.$(br2)Affinity: Life$(br)Range: 50 - 100 %"); - abilityIdTranslation(AMAbilities.MANA_REDUCTION, "After using arcane spells for some time, your spells' mana requirements goes down. As you delve deeper, you notice the mana cost getting lower and lower.$(br2)Affinity: Arcane$(br)Range: 1 - 100 %"); - abilityIdTranslation(AMAbilities.CLARITY, "Becoming one with the arcane, you have a chance of receiving the Clarity effect upon casting, which allows you to cast your next spell for free.$(br2)Affinity: Arcane$(br)Range: 100 %"); - abilityIdTranslation(AMAbilities.MAGIC_DAMAGE, "Having fun with arcane magic has made you vulnerable against the very thing you use. You will receive more damage from magic sources.$(br2)Affinity: Arcane$(br)Range: 50 - 100 %"); - abilityIdTranslation(AMAbilities.POISON_RESISTANCE, "After using ender spells for quite some time, you develop a resistance against toxins.$(br2)Affinity: Ender$(br)Range: 50 - 100 %"); - abilityIdTranslation(AMAbilities.NIGHT_VISION, "After using ender spells for quite some time, you gain permanent night vision.$(br2)Affinity: Ender$(br)Range: 50 - 100 %"); - abilityIdTranslation(AMAbilities.ENDERMAN_PUMPKIN, "Becoming one with the end, enderman will treat you as one of their own and not attack you anymore when staring into their eyes.$(br2)Affinity: Ender$(br)Range: 100 %"); - abilityIdTranslation(AMAbilities.LIGHT_HEALTH_REDUCTION, "Toying around with ender magic consumes your life in light. When in direct sunlight, your maximum health decreases.$(br2)Affinity: Ender$(br)Range: 50 - 100 %$(br)There have been rumors among the villagers of true ender mages that managed to nullify this effect..."); - abilityIdTranslation(AMAbilities.WATER_HEALTH_REDUCTION, "Toying around with ender magic consumes your life in water. When in water, your maximum health decreases.$(br2)Affinity: Ender$(br)Range: 50 - 100 %$(br)There have been rumors among the villagers of true ender mages that managed to nullify this effect..."); + abilityIdTranslation(AMAbilities.FIRE_RESISTANCE, "After using fire spells for some time, you develop some resistance to fire. As you delve deeper, you notice the resistance getting stronger and stronger.$(br2)Affinity: Fire$(br)Range: 1 - 100 %%"); + abilityIdTranslation(AMAbilities.FIRE_PUNCH, "Becoming part fire, enemies you hit now get set on fire.$(br2)Affinity: Fire$(br)Range: 100 %%"); + addAbility(AMAbilities.WATER_DAMAGE_FIRE, "Water Damage (Fire)", "Having fun with fire magic has made you less suitable for water. You will take damage in water, though not enough to kill you on its own.$(br2)Affinity: Fire$(br)Range: 50 - 100 %%"); + abilityIdTranslation(AMAbilities.SWIM_SPEED, "After using water spells for some time, you develop better swimming skills. As you delve deeper, you notice your speed in water getting faster and faster.$(br2)Affinity: Water$(br)Range: 1 - 100 %%"); + abilityIdTranslation(AMAbilities.ENDERMAN_THORNS, "Becoming part water, enderman that hit you now take damage themselves.$(br2)Affinity: Water$(br)Range: 100 %%"); + addAbility(AMAbilities.NETHER_DAMAGE_WATER, "Nether Damage (Water)", "Having fun with water magic has made you less suitable for fire. You will take damage in the nether, though not enough to kill you on its own.$(br2)Affinity: Water$(br)Range: 50 - 100 %%"); + abilityIdTranslation(AMAbilities.RESISTANCE, "After using earth spells for some time, you develop some physical resistance. As you delve deeper, you notice the resistance getting stronger and stronger.$(br2)Affinity: Earth$(br)Range: 1 - 100 %%"); + abilityIdTranslation(AMAbilities.HASTE, "After using earth spells for some time, you develop better block breaking skills. As you delve deeper, you notice that speed getting faster and faster.$(br2)Affinity: Earth$(br)Range: 1 - 100 %%"); + abilityIdTranslation(AMAbilities.FALL_DAMAGE, "Having fun with earth magic has made you heavier. You take more fall damage.$(br2)Affinity: Earth$(br)Range: 50 - 100 %%"); + abilityIdTranslation(AMAbilities.JUMP_BOOST, "After using air spells for some time, you develop better jumping skills. As you delve deeper, you notice your jump strength getting stronger and stronger.$(br2)Affinity: Air$(br)Range: 1 - 100 %%"); + abilityIdTranslation(AMAbilities.FEATHER_FALLING, "After using air spells for some time, you develop better landing skills. As you delve deeper, you notice your fall damage taken getting weaker and weaker.$(br2)Affinity: Air$(br)Range: 1 - 100 %%"); + abilityIdTranslation(AMAbilities.GRAVITY, "Having fun with air magic has made you accidentally bend gravity. You fall a lot faster.$(br2)Affinity: Air$(br)Range: 50 - 100 %%"); + abilityIdTranslation(AMAbilities.FROST_PUNCH, "After using ice spells for some time, you develop a frost punch, slowing your enemies. As you delve deeper, you notice the frost getting stronger and stronger.$(br2)Affinity: Ice$(br)Range: 1 - 100 %%"); + abilityIdTranslation(AMAbilities.FROST_WALKER, "Becoming part ice, water now freezes under your feet.$(br2)Affinity: Ice$(br)Range: 100 %%"); + abilityIdTranslation(AMAbilities.SLOWNESS, "Having fun with ice magic has made you shiver. You move slower.$(br2)Affinity: Ice$(br)Range: 50 - 100 %%"); + abilityIdTranslation(AMAbilities.SPEED, "After using lightning spells for some time, you develop better running skills. As you delve deeper, you notice your speed becoming faster and faster.$(br2)Affinity: Lightning$(br)Range: 1 - 100 %%"); + abilityIdTranslation(AMAbilities.STEP_ASSIST, "Becoming part lightning, you are now able to step up 1-block slopes.$(br2)Affinity: Lightning$(br)Range: 100 %%"); + addAbility(AMAbilities.WATER_DAMAGE_LIGHTNING, "Water Damage (Lightning)", "Having fun with lightning magic has made you less suitable for water. You will take damage in water, though not enough to kill you on its own.$(br2)Affinity: Lightning$(br)Range: 50 - 100 %%"); + abilityIdTranslation(AMAbilities.SATURATION, "After using nature spells for some time, you feel nourished. As you delve deeper, you notice nourishment getting stronger and stronger.$(br2)Affinity: Nature$(br)Range: 1 - 100 %%"); + abilityIdTranslation(AMAbilities.THORNS, "Becoming one with nature, enemies that hit you now take a bit of damage themselves.$(br2)Affinity: Nature$(br)Range: 100 %%"); + addAbility(AMAbilities.NETHER_DAMAGE_NATURE, "Nether Damage (Nature)", "Having fun with nature magic has made you less suitable for fire. You will take damage in the nether, though not enough to kill you on its own.$(br2)Affinity: Nature$(br)Range: 50 - 100 %%"); + abilityIdTranslation(AMAbilities.SMITE, "After using life spells for some time, you feel an urge to slay the undead. As you delve deeper, you notice your damage towards undeads getting stronger and stronger.$(br2)Affinity: Life$(br)Range: 1 - 100 %%"); + abilityIdTranslation(AMAbilities.REGENERATION, "Becoming one with life, you get a permanent regeneration effect.$(br2)Affinity: Life$(br)Range: 100 %%"); + abilityIdTranslation(AMAbilities.NAUSEA, "Having fun with life magic has made you less suitable for killing. You will receive a nausea effect when killing a non-undead enemy.$(br2)Affinity: Life$(br)Range: 50 - 100 %%"); + abilityIdTranslation(AMAbilities.MANA_REDUCTION, "After using arcane spells for some time, your spells' mana requirements goes down. As you delve deeper, you notice the mana cost getting lower and lower.$(br2)Affinity: Arcane$(br)Range: 1 - 100 %%"); + abilityIdTranslation(AMAbilities.CLARITY, "Becoming one with the arcane, you have a chance of receiving the Clarity effect upon casting, which allows you to cast your next spell for free.$(br2)Affinity: Arcane$(br)Range: 100 %%"); + abilityIdTranslation(AMAbilities.MAGIC_DAMAGE, "Having fun with arcane magic has made you vulnerable against the very thing you use. You will receive more damage from magic sources.$(br2)Affinity: Arcane$(br)Range: 50 - 100 %%"); + abilityIdTranslation(AMAbilities.POISON_RESISTANCE, "After using ender spells for quite some time, you develop a resistance against toxins.$(br2)Affinity: Ender$(br)Range: 50 - 100 %%"); + abilityIdTranslation(AMAbilities.NIGHT_VISION, "After using ender spells for quite some time, you gain permanent night vision.$(br2)Affinity: Ender$(br)Range: 50 - 100 %%"); + abilityIdTranslation(AMAbilities.ENDERMAN_PUMPKIN, "Becoming one with the end, enderman will treat you as one of their own and not attack you anymore when staring into their eyes.$(br2)Affinity: Ender$(br)Range: 100 %%"); + abilityIdTranslation(AMAbilities.LIGHT_HEALTH_REDUCTION, "Toying around with ender magic consumes your life in light. When in direct sunlight, your maximum health decreases.$(br2)Affinity: Ender$(br)Range: 50 - 100 %%$(br)There have been rumors among the villagers of true ender mages that managed to nullify this effect..."); + abilityIdTranslation(AMAbilities.WATER_HEALTH_REDUCTION, "Toying around with ender magic consumes your life in water. When in water, your maximum health decreases.$(br2)Affinity: Ender$(br)Range: 50 - 100 %%$(br)There have been rumors among the villagers of true ender mages that managed to nullify this effect..."); skillTranslation(AMSpellParts.ABSORPTION.getId(), "Absorption", "Like a slightly flimsier shield.", "components", "You gain absorption hearts, like you would when eating a golden apple. This does not stack with golden apples."); skillTranslation(AMSpellParts.AGILITY.getId(), "Agility", "Seems like you won't be catching me anytime soon.", "components", "You managed to gain step-up abilities, greater jump height and reduced fall damage."); skillTranslation(AMSpellParts.AOE.getId(), "AoE", "All around me!", "shapes", "After charging your spell, you can shape it into a blast that radiates outwards from the spell's origin. An AoE spell will not affect the caster."); @@ -271,7 +272,7 @@ protected void addTranslations() { skillTranslation(AMSpellParts.DAYLIGHT.getId(), "Daylight", "Does that mean I can control time?", "components", "You have gained the ability to control time.$(br2)This spell will cause the time to move to dawn."); skillTranslation(AMSpellParts.DIG.getId(), "Dig", "Diggy Diggy Hole!", "components", "The ground shatters with a snap of your fingers. Harder blocks take more mana to break.$(br2)Dig starts out equivalent to an Iron pickaxe, but can be upgraded with the use of the $(l:modifiers/mining_power)Mining Power$() modifier."); skillTranslation(AMSpellParts.DISARM.getId(), "Disarm", "Woops, you dropped something?", "components", "Now that you have learned to summon tools to your hand, it was a small step to be able to make others drop what they are holding."); - skillTranslation(AMSpellParts.DISMEMBERING.getId(), "[WIP] Dismembering", "Wasn't me. I swear he had no head when I came in.", "modifiers", "You like souvenirs so much that you have discovered how to make your damaging spells leave some pieces intact.$(br2)Each modifier adds a 5% chance to drop a head when defeating an enemy."); + skillTranslation(AMSpellParts.DISMEMBERING.getId(), "[WIP] Dismembering", "Wasn't me. I swear he had no head when I came in.", "modifiers", "You like souvenirs so much that you have discovered how to make your damaging spells leave some pieces intact.$(br2)Each modifier adds a 5%% chance to drop a head when defeating an enemy."); skillTranslation(AMSpellParts.DISPEL.getId(), "Dispel", "Witches have no say here.", "components", "Creating a localized field of deficit, you can remove up to six levels of potion effects on your target."); skillTranslation(AMSpellParts.DIVINE_INTERVENTION.getId(), "Divine Intervention", "Dimension-hopping! Yay!", "components", "You have mastered teleportation magic, to the level at which you can transcend interdimensional barriers, and can enter the overworld from anywhere, except the nether."); skillTranslation(AMSpellParts.DROUGHT.getId(), "Drought", "Heat. Lots of heat.", "components", "You have taken your knowledge of creating water and have reversed the process.$(br2)This spell will draw water out of whatever it hits, removing water blocks, turning dirt-ish blocks to sand, withering plants it hits, and cracking stone to cobblestone."); @@ -354,6 +355,16 @@ protected void addTranslations() { skillTranslation(AMSpellParts.WAVE.getId(), "Wave", "You might not want to surf on this one.", "shapes", "You can project a wave of magic in front of you that rolls forward, applying its effect to everything in its path."); skillTranslation(AMSpellParts.WIZARDS_AUTUMN.getId(), "Wizard's Autumn", "Leaves must leave.", "components", "You have learned to focus your digging magic into a small radius that directly affects leaves.$(br2)This component has a built-in $(l:shapes/aoe)AoE$() that can be modified with $(l:modifiers/range)Range$() modifiers."); skillTranslation(AMSpellParts.ZONE.getId(), "Zone", "No one can beat me in my sanctuary!", "shapes", "You have learned to focus your will into an area effect that will persist for a time."); + skillTranslation(AMTalents.AFFINITY_GAINS_BOOST, "Affinity Gains Boost", "Let's skip to the part where I have superpowers.", "talents", "You gain a 5%% boost in affinity gains."); + skillTranslation(AMTalents.AUGMENTED_CASTING, "Augmented Casting", "Upgrades, people, upgrades.", "talents", "All your spells gain a little boost. A little more damage, a little more duration, a little more speed, a little bit of everything."); + /*skillTranslation(AMTalents.EXTRA_SUMMONS, "Extra Summons", "Why should I do the fighting?", "talents", "When $(l:components/summon)summoning$() creatures, you can have just a little bit more of them."); + skillTranslation(AMTalents.MAGE_BAND_1, "Mage Band I", "Starting a cult.", "talents", "You have built enough trust with light mages for them to follow you if requested."); + skillTranslation(AMTalents.MAGE_BAND_2, "Mage Band II", "Group effort!", "talents", "Building even more trust, light mages will now automatically link their mana pools with yours if you are close.");*/ + skillTranslation(AMTalents.MANA_REGEN_BOOST_1, "Mana Regeneration I", "And I would gain 500 mana...", "talents", "Your mana regeneration is boosted by 5%%."); + skillTranslation(AMTalents.MANA_REGEN_BOOST_2, "Mana Regeneration II", "...and I would gain 500 more...", "talents", "Your mana regeneration is boosted by 10%%. This replaces the boost of $(l:talents/mana_regen_1)Mana Regen I$()."); + skillTranslation(AMTalents.MANA_REGEN_BOOST_3, "Mana Regeneration III", "...just to get back every single mana point I have consumed before.", "talents", "Your mana regeneration is boosted by 15%%. This replaces the boosts of $(l:talents/mana_regen_1)Mana Regen I$() and $(l:talents/mana_regen_2)Mana Regen II$()."); + skillTranslation(AMTalents.SHIELD_OVERLOAD, "Shield Overload", "No more wasting excess mana.", "talents", "When your mana bar is full, excess mana regenerated turns into a shield that protects you from 5%% of all incoming damage."); + skillTranslation(AMTalents.SPELL_MOTION, "Spell Motion", "I like to move it, move it.", "talents", "Manipulating the winds around you, you have found a way to move at normal speed while using spells."); configTranslation("require_compendium_crafting", "Whether the player needs to craft the compendium before being able to use magic. If disabled, the player can use magic from the beginning."); configTranslation("burnout_ratio", "The default mana to burnout ratio, used in calculating spell costs."); configTranslation("crafting_altar_check_time", "The time in ticks between multiblock validation checks for the crafting altar."); diff --git a/src/data/java/com/github/minecraftschurlimods/arsmagicalegacy/data/AMOcculusTabProvider.java b/src/data/java/com/github/minecraftschurlimods/arsmagicalegacy/data/AMOcculusTabProvider.java index adc61bac4..7c4bfad0b 100644 --- a/src/data/java/com/github/minecraftschurlimods/arsmagicalegacy/data/AMOcculusTabProvider.java +++ b/src/data/java/com/github/minecraftschurlimods/arsmagicalegacy/data/AMOcculusTabProvider.java @@ -18,6 +18,7 @@ protected void generate() { builder("offense", 0).setStartX(226).setStartY(46).build(); builder("defense", 1).setStartX(181).setStartY(46).build(); builder("utility", 2).setStartX(136).setStartY(46).build(); - builder("affinity", 3).setRenderer(OcculusAffinityTabRenderer.class).build(); + builder("talent", 3).setStartX(91).setStartY(46).build(); + builder("affinity", 4).setRenderer(OcculusAffinityTabRenderer.class).build(); } } diff --git a/src/data/java/com/github/minecraftschurlimods/arsmagicalegacy/data/AMPatchouliBookProvider.java b/src/data/java/com/github/minecraftschurlimods/arsmagicalegacy/data/AMPatchouliBookProvider.java index 9302be67a..0b0747f92 100644 --- a/src/data/java/com/github/minecraftschurlimods/arsmagicalegacy/data/AMPatchouliBookProvider.java +++ b/src/data/java/com/github/minecraftschurlimods/arsmagicalegacy/data/AMPatchouliBookProvider.java @@ -7,6 +7,7 @@ import com.github.minecraftschurlimods.arsmagicalegacy.common.init.AMEntities; import com.github.minecraftschurlimods.arsmagicalegacy.common.init.AMItems; import com.github.minecraftschurlimods.arsmagicalegacy.common.init.AMSpellParts; +import com.github.minecraftschurlimods.arsmagicalegacy.common.init.AMTalents; import com.github.minecraftschurlimods.arsmagicalegacy.compat.patchouli.PatchouliCompat; import com.github.minecraftschurlimods.patchouli_datagen.AbstractPageBuilder; import com.github.minecraftschurlimods.patchouli_datagen.BookBuilder; @@ -53,14 +54,16 @@ protected void addBooks(Consumer> consumer) { .setSortnum(0) .addEntry("getting_started", "Getting Started", api.getBookStack()) .setPriority(true) - .addSimpleTextPage("Spellcrafting looks complex from a distance, but gets very easy when doing it more often.$(br2)You start by crafting an $(l:blocks/occulus)Occulus$(), placing it down and opening it. Through the Occulus, you can unlock new skills. Skills come in three categories, more on that in a minute.") - .addImagePage(new ResourceLocation(ArsMagicaAPI.MOD_ID, "patchouli_books/arcane_compendium/en_us/images/occulus.png")).setText("The Occulus has four tabs, the first three of which are skill tree tabs.").build() + .addSimpleTextPage("Spellcrafting looks complex from a distance, but gets very easy when doing it more often.$(br2)You start by crafting an $(l:blocks/occulus)Occulus$(), placing it down and opening it. Through the Occulus, you can unlock new skills. Skills come in four categories, more on that in a minute.") + .addImagePage(new ResourceLocation(ArsMagicaAPI.MOD_ID, "patchouli_books/arcane_compendium/en_us/images/occulus.png")).setText("The Occulus has five tabs, the first four of which are skill tree tabs.").build() .addSimpleTextPage("The first category of skills, shapes, determine how the spell is cast. For example, $(l:shapes/self)Self$() means that the spell is cast onto yourself, while $(l:shapes/projectile)Projectile$() shoots a projectile that casts the spell on whatever it hits.$(br2)Shapes have a square outline in the Occulus.", "Shapes") .addSimpleTextPage("The second skill category, the components, represent what the spell does. For instance, $(l:components/physical_damage)Physical Damage$() acts as if the spell hit the target with a sword, while $(l:components/dig)Dig$() breaks the targeted block. As you may have guessed, some components only affect blocks, some only affect mobs, some affect both, and very few affect neither, instead doing something else entirely.$(br2)Components have an octagonal outline in the Occulus.", "Components") - .addSimpleTextPage("And lastly, modifiers. Modifiers can affect both shapes and components, but not every combination will turn out to actually have an effect (what sense would $(l:components/fire_damage)Fire Damage$() + $(l:modifiers/gravity)Gravity$() make?) The book tells you most, but not all useful combinations.$(br2)Modifiers have a rotated square outline in the Occulus.", "Modifiers") + .addSimpleTextPage("Next up, modifiers. Modifiers can affect both shapes and components, but not every combination will turn out to actually have an effect (what sense would $(l:components/fire_damage)Fire Damage$() + $(l:modifiers/gravity)Gravity$() make?) The book tells you most, but not all useful combinations.$(br2)Modifiers have a rotated square outline in the Occulus.", "Modifiers") + .addSimpleTextPage("And finally, talents. Talents are not regular spell parts, instead, they are permanent unlockables that boost the player's capability to perform magic in different ways.$(br2)Talents have an octagonal shape, like components. They can be distinguished from them by looking at the tab: All talents are in the Occulus's Talents tab, and all octagonal parts in the Talents tab are talent skills.", "Talents") + .addSimpleTextPage("A word should also go to the Affinity tab of the Occulus. This tab displays your affinity depths. It would be too complex to explain this here, so for further reading, please consult the $(l:affinities/affinities)affinity chapter$().", "Affinities") .addSimpleTextPage("At this point, you may rightfully ask yourself: Why should I learn all this? We'll catch up to this in a moment. For now, the next thing you need is an $(l:blocks/inscription_table)Inscription Table$(). The Inscription Table is where you will assemble your spell. Since this can be complex for novices, it will be explained in detail on the following pages.") - .addImagePage(new ResourceLocation(ArsMagicaAPI.MOD_ID, "patchouli_books/arcane_compendium/en_us/images/inscription_table_1.png")).build() - .addSimpleTextPage("1) The Source Area contains all skills you currently know. The search bar can be used to quickly find the part you want.$(br)2) A slot that takes in a Book & Quill. The spell recipe will be written onto this book.$(br)3) A total of five brown squares, the so-called $(l:mechanics/shape_groups)shape group$() areas. You can drag shapes and modifiers here. For the beginning, you should only be using the first one.$(br)4) The spell grammar section. This is where components and component-related modifiers go.") + .addSimpleTextPage("1) The Source Area contains all skills you currently know.$(br)2) A slot that takes in a Book & Quill. The spell recipe will be written onto this book.$(br)3) A total of five brown squares, the so-called $(l:mechanics/shape_groups)shape group$() areas. You can drag shapes and modifiers here. For the beginning, you should only be using the first one.$(br)4) The spell grammar section. This is where components and component-related modifiers go.") + .addImagePage(new ResourceLocation(ArsMagicaAPI.MOD_ID, "patchouli_books/arcane_compendium/en_us/images/inscription_table_1.png")).setText("The search bar can be used to quickly find a spell part. The name bar can be used to name your spell, this is not required though.").build() .addImagePage(new ResourceLocation(ArsMagicaAPI.MOD_ID, "patchouli_books/arcane_compendium/en_us/images/inscription_table_2.png")).setText("Drag the skills down to the shape groups and the spell grammar section.").build() .addImagePage(new ResourceLocation(ArsMagicaAPI.MOD_ID, "patchouli_books/arcane_compendium/en_us/images/inscription_table_3.png")).setText("The shown spell recipe is $(l:shapes/projectile)Projectile$()-$(l:components/dig)Dig$(), which is recommended for beginners.").build() .addSimpleTextPage("Note that not every combination is allowed in the Inscription Table. Do not worry, though, since you will notice soon enough that you're trying to do something that is not permitted.$(br2)Once you are done, simply take out the book.") @@ -323,10 +326,6 @@ protected void addBooks(Consumer> consumer) { .setSortnum(5); TranslatedCategoryBuilder modifiers = builder.addCategory("modifiers", "Modifiers", "", ArsMagicaAPI.MOD_ID + ":textures/icon/skill/target_non_solid.png") .setSortnum(6); -/* - TranslatedCategoryBuilder talents = builder.addCategory("talents", "Talents", "", ArsMagicaAPI.MOD_ID + ":textures/icon/skill/augmented_casting.png") - .setSortnum(7); -*/ for (ISpellPart spellPart : api.getSpellPartRegistry()) { if (spellPart != AMSpellParts.MELT_ARMOR.get() && spellPart != AMSpellParts.NAUSEA.get() && spellPart != AMSpellParts.SCRAMBLE_SYNAPSES.get()) { TranslatedCategoryBuilder b = switch (spellPart.getType()) { @@ -348,6 +347,14 @@ protected void addBooks(Consumer> consumer) { shapes.build(); components.build(); modifiers.build(); + TranslatedCategoryBuilder talents = builder.addCategory("talents", "Talents", "", ArsMagicaAPI.MOD_ID + ":textures/icon/skill/mana_regen_boost_1.png") + .setSortnum(7); + for (ResourceLocation talent : AMTalents.ALL) { + TranslatedEntryBuilder entry = talents.addEntry(talent.getPath(), Util.makeDescriptionId("skill", talent) + ".name", talent.getNamespace() + ":textures/icon/skill/" + talent.getPath() + ".png") + .setAdvancement(new ResourceLocation(ArsMagicaAPI.MOD_ID, "book/" + talent.getPath())); + entry.addSimpleTextPage(entry.getLangKey(0) + ".text").build(); + } + talents.build(); TranslatedCategoryBuilder affinities = builder.addCategory("affinities", "Affinities", "", affinityHelper.getEssenceForAffinity(Affinity.WATER)) .setSortnum(8); affinities.addEntry("affinities", "Affinities", affinityHelper.getTomeForAffinity(Affinity.NONE)) diff --git a/src/data/java/com/github/minecraftschurlimods/arsmagicalegacy/data/AMRitualProvider.java b/src/data/java/com/github/minecraftschurlimods/arsmagicalegacy/data/AMRitualProvider.java index 89ed2448f..26ee6082c 100644 --- a/src/data/java/com/github/minecraftschurlimods/arsmagicalegacy/data/AMRitualProvider.java +++ b/src/data/java/com/github/minecraftschurlimods/arsmagicalegacy/data/AMRitualProvider.java @@ -8,6 +8,7 @@ import com.github.minecraftschurlimods.arsmagicalegacy.common.init.AMEntities; import com.github.minecraftschurlimods.arsmagicalegacy.common.init.AMItems; import com.github.minecraftschurlimods.arsmagicalegacy.common.init.AMSpellParts; +import com.github.minecraftschurlimods.arsmagicalegacy.common.init.AMTalents; import com.github.minecraftschurlimods.arsmagicalegacy.common.ritual.effect.EntitySpawnRitualEffect; import com.github.minecraftschurlimods.arsmagicalegacy.common.ritual.effect.LearnSkillRitualEffect; import com.github.minecraftschurlimods.arsmagicalegacy.common.ritual.effect.PlaceBlockRitualEffect; @@ -132,5 +133,8 @@ protected void generate() { builder("unlock_prosperity", new LearnSkillRitualEffect(AMSpellParts.PROSPERITY.get()), new SpellComponentCastRitualTrigger(List.of(AMSpellParts.DIG.get(), AMSpellParts.PHYSICAL_DAMAGE.get()), List.of(AMSpellParts.MINING_POWER.get(), AMSpellParts.SILK_TOUCH.get()))) .build(); + builder("unlock_shield_overload", new LearnSkillRitualEffect(AMTalents.SHIELD_OVERLOAD), + new SpellComponentCastRitualTrigger(List.of(AMSpellParts.SHIELD.get(), AMSpellParts.MANA_DRAIN.get()))) + .build(); } } diff --git a/src/data/java/com/github/minecraftschurlimods/arsmagicalegacy/data/AMSkillProvider.java b/src/data/java/com/github/minecraftschurlimods/arsmagicalegacy/data/AMSkillProvider.java index 52e93d24b..40dbabf26 100644 --- a/src/data/java/com/github/minecraftschurlimods/arsmagicalegacy/data/AMSkillProvider.java +++ b/src/data/java/com/github/minecraftschurlimods/arsmagicalegacy/data/AMSkillProvider.java @@ -14,6 +14,7 @@ import static com.github.minecraftschurlimods.arsmagicalegacy.common.init.AMSkillPoints.GREEN; import static com.github.minecraftschurlimods.arsmagicalegacy.common.init.AMSkillPoints.RED; import static com.github.minecraftschurlimods.arsmagicalegacy.common.init.AMSpellParts.*; +import static com.github.minecraftschurlimods.arsmagicalegacy.common.init.AMTalents.*; class AMSkillProvider extends SkillProvider { private static final ResourceLocation OFFENSE = new ResourceLocation(ArsMagicaAPI.MOD_ID, "offense"); @@ -448,6 +449,44 @@ protected void generate() { .addCost(RED.get()) .addParent(FLING.getId()) .build(); + talent(AFFINITY_GAINS_BOOST, 120, 30) + .addCost(BLUE.get()) + .addParent(MANA_REGEN_BOOST_1) + .build(); + talent(AUGMENTED_CASTING, 30, 120) + .addCost(RED.get()) + .addParent(SPELL_MOTION) + .build(); + /*talent(EXTRA_SUMMONS, 30, 165) + .addCost(RED.get()) + .addParent(AUGMENTED_CASTING) + .build(); + talent(MAGE_BAND_1, 120, 75) + .addCost(GREEN.get()) + .addParent(MANA_REGEN_BOOST_2) + .build(); + talent(MAGE_BAND_2, 120, 120) + .addCost(RED.get()) + .addParent(MAGE_BAND_1) + .build();*/ + talent(MANA_REGEN_BOOST_1, 75, 30) + .addCost(BLUE.get()) + .build(); + talent(MANA_REGEN_BOOST_2, 75, 75) + .addCost(GREEN.get()) + .addParent(MANA_REGEN_BOOST_1) + .build(); + talent(MANA_REGEN_BOOST_3, 75, 120) + .addCost(RED.get()) + .addParent(MANA_REGEN_BOOST_2) + .build(); + talent(SHIELD_OVERLOAD, 30, 30) + .setHidden() + .build(); + talent(SPELL_MOTION, 30, 75) + .addCost(GREEN.get()) + .addParent(MANA_REGEN_BOOST_2) + .build(); } private Builder offense(RegistryObject part, int x, int y) { @@ -462,7 +501,7 @@ private Builder utility(RegistryObject part, int x, int y) return builder(part.getId().getPath(), UTILITY, x, y); } - private Builder talent(RegistryObject part, int x, int y) { - return builder(part.getId().getPath(), TALENT, x, y); + private Builder talent(ResourceLocation id, int x, int y) { + return builder(id.getPath(), TALENT, x, y); } } diff --git a/src/main/generated/assets/arsmagicalegacy/lang/en_us.json b/src/main/generated/assets/arsmagicalegacy/lang/en_us.json index c15a237ad..a618a0269 100644 --- a/src/main/generated/assets/arsmagicalegacy/lang/en_us.json +++ b/src/main/generated/assets/arsmagicalegacy/lang/en_us.json @@ -1,67 +1,67 @@ { - "ability.arsmagicalegacy.clarity.description": "Becoming one with the arcane, you have a chance of receiving the Clarity effect upon casting, which allows you to cast your next spell for free.$(br2)Affinity: Arcane$(br)Range: 100 %", + "ability.arsmagicalegacy.clarity.description": "Becoming one with the arcane, you have a chance of receiving the Clarity effect upon casting, which allows you to cast your next spell for free.$(br2)Affinity: Arcane$(br)Range: 100 %%", "ability.arsmagicalegacy.clarity.name": "Clarity", - "ability.arsmagicalegacy.enderman_pumpkin.description": "Becoming one with the end, enderman will treat you as one of their own and not attack you anymore when staring into their eyes.$(br2)Affinity: Ender$(br)Range: 100 %", + "ability.arsmagicalegacy.enderman_pumpkin.description": "Becoming one with the end, enderman will treat you as one of their own and not attack you anymore when staring into their eyes.$(br2)Affinity: Ender$(br)Range: 100 %%", "ability.arsmagicalegacy.enderman_pumpkin.name": "Enderman Pumpkin", - "ability.arsmagicalegacy.enderman_thorns.description": "Becoming part water, enderman that hit you now take damage themselves.$(br2)Affinity: Water$(br)Range: 100 %", + "ability.arsmagicalegacy.enderman_thorns.description": "Becoming part water, enderman that hit you now take damage themselves.$(br2)Affinity: Water$(br)Range: 100 %%", "ability.arsmagicalegacy.enderman_thorns.name": "Enderman Thorns", - "ability.arsmagicalegacy.fall_damage.description": "Having fun with earth magic has made you heavier. You take more fall damage.$(br2)Affinity: Earth$(br)Range: 50 - 100 %", + "ability.arsmagicalegacy.fall_damage.description": "Having fun with earth magic has made you heavier. You take more fall damage.$(br2)Affinity: Earth$(br)Range: 50 - 100 %%", "ability.arsmagicalegacy.fall_damage.name": "Fall Damage", - "ability.arsmagicalegacy.feather_falling.description": "After using air spells for some time, you develop better landing skills. As you delve deeper, you notice your fall damage taken getting weaker and weaker.$(br2)Affinity: Air$(br)Range: 1 - 100 %", + "ability.arsmagicalegacy.feather_falling.description": "After using air spells for some time, you develop better landing skills. As you delve deeper, you notice your fall damage taken getting weaker and weaker.$(br2)Affinity: Air$(br)Range: 1 - 100 %%", "ability.arsmagicalegacy.feather_falling.name": "Feather Falling", - "ability.arsmagicalegacy.fire_punch.description": "Becoming part fire, enemies you hit now get set on fire.$(br2)Affinity: Fire$(br)Range: 100 %", + "ability.arsmagicalegacy.fire_punch.description": "Becoming part fire, enemies you hit now get set on fire.$(br2)Affinity: Fire$(br)Range: 100 %%", "ability.arsmagicalegacy.fire_punch.name": "Fire Punch", - "ability.arsmagicalegacy.fire_resistance.description": "After using fire spells for some time, you develop some resistance to fire. As you delve deeper, you notice the resistance getting stronger and stronger.$(br2)Affinity: Fire$(br)Range: 1 - 100 %", + "ability.arsmagicalegacy.fire_resistance.description": "After using fire spells for some time, you develop some resistance to fire. As you delve deeper, you notice the resistance getting stronger and stronger.$(br2)Affinity: Fire$(br)Range: 1 - 100 %%", "ability.arsmagicalegacy.fire_resistance.name": "Fire Resistance", - "ability.arsmagicalegacy.frost_punch.description": "After using ice spells for some time, you develop a frost punch, slowing your enemies. As you delve deeper, you notice the frost getting stronger and stronger.$(br2)Affinity: Ice$(br)Range: 1 - 100 %", + "ability.arsmagicalegacy.frost_punch.description": "After using ice spells for some time, you develop a frost punch, slowing your enemies. As you delve deeper, you notice the frost getting stronger and stronger.$(br2)Affinity: Ice$(br)Range: 1 - 100 %%", "ability.arsmagicalegacy.frost_punch.name": "Frost Punch", - "ability.arsmagicalegacy.frost_walker.description": "Becoming part ice, water now freezes under your feet.$(br2)Affinity: Ice$(br)Range: 100 %", + "ability.arsmagicalegacy.frost_walker.description": "Becoming part ice, water now freezes under your feet.$(br2)Affinity: Ice$(br)Range: 100 %%", "ability.arsmagicalegacy.frost_walker.name": "Frost Walker", - "ability.arsmagicalegacy.gravity.description": "Having fun with air magic has made you accidentally bend gravity. You fall a lot faster.$(br2)Affinity: Air$(br)Range: 50 - 100 %", + "ability.arsmagicalegacy.gravity.description": "Having fun with air magic has made you accidentally bend gravity. You fall a lot faster.$(br2)Affinity: Air$(br)Range: 50 - 100 %%", "ability.arsmagicalegacy.gravity.name": "Gravity", - "ability.arsmagicalegacy.haste.description": "After using earth spells for some time, you develop better block breaking skills. As you delve deeper, you notice that speed getting faster and faster.$(br2)Affinity: Earth$(br)Range: 1 - 100 %", + "ability.arsmagicalegacy.haste.description": "After using earth spells for some time, you develop better block breaking skills. As you delve deeper, you notice that speed getting faster and faster.$(br2)Affinity: Earth$(br)Range: 1 - 100 %%", "ability.arsmagicalegacy.haste.name": "Haste", - "ability.arsmagicalegacy.jump_boost.description": "After using air spells for some time, you develop better jumping skills. As you delve deeper, you notice your jump strength getting stronger and stronger.$(br2)Affinity: Air$(br)Range: 1 - 100 %", + "ability.arsmagicalegacy.jump_boost.description": "After using air spells for some time, you develop better jumping skills. As you delve deeper, you notice your jump strength getting stronger and stronger.$(br2)Affinity: Air$(br)Range: 1 - 100 %%", "ability.arsmagicalegacy.jump_boost.name": "Jump Boost", - "ability.arsmagicalegacy.light_health_reduction.description": "Toying around with ender magic consumes your life in light. When in direct sunlight, your maximum health decreases.$(br2)Affinity: Ender$(br)Range: 50 - 100 %$(br)There have been rumors among the villagers of true ender mages that managed to nullify this effect...", + "ability.arsmagicalegacy.light_health_reduction.description": "Toying around with ender magic consumes your life in light. When in direct sunlight, your maximum health decreases.$(br2)Affinity: Ender$(br)Range: 50 - 100 %%$(br)There have been rumors among the villagers of true ender mages that managed to nullify this effect...", "ability.arsmagicalegacy.light_health_reduction.name": "Light Health Reduction", - "ability.arsmagicalegacy.magic_damage.description": "Having fun with arcane magic has made you vulnerable against the very thing you use. You will receive more damage from magic sources.$(br2)Affinity: Arcane$(br)Range: 50 - 100 %", + "ability.arsmagicalegacy.magic_damage.description": "Having fun with arcane magic has made you vulnerable against the very thing you use. You will receive more damage from magic sources.$(br2)Affinity: Arcane$(br)Range: 50 - 100 %%", "ability.arsmagicalegacy.magic_damage.name": "Magic Damage", - "ability.arsmagicalegacy.mana_reduction.description": "After using arcane spells for some time, your spells' mana requirements goes down. As you delve deeper, you notice the mana cost getting lower and lower.$(br2)Affinity: Arcane$(br)Range: 1 - 100 %", + "ability.arsmagicalegacy.mana_reduction.description": "After using arcane spells for some time, your spells' mana requirements goes down. As you delve deeper, you notice the mana cost getting lower and lower.$(br2)Affinity: Arcane$(br)Range: 1 - 100 %%", "ability.arsmagicalegacy.mana_reduction.name": "Mana Reduction", - "ability.arsmagicalegacy.nausea.description": "Having fun with life magic has made you less suitable for killing. You will receive a nausea effect when killing a non-undead enemy.$(br2)Affinity: Life$(br)Range: 50 - 100 %", + "ability.arsmagicalegacy.nausea.description": "Having fun with life magic has made you less suitable for killing. You will receive a nausea effect when killing a non-undead enemy.$(br2)Affinity: Life$(br)Range: 50 - 100 %%", "ability.arsmagicalegacy.nausea.name": "Nausea", - "ability.arsmagicalegacy.nether_damage_nature.description": "Having fun with nature magic has made you less suitable for fire. You will take damage in the nether, though not enough to kill you on its own.$(br2)Affinity: Nature$(br)Range: 50 - 100 %", + "ability.arsmagicalegacy.nether_damage_nature.description": "Having fun with nature magic has made you less suitable for fire. You will take damage in the nether, though not enough to kill you on its own.$(br2)Affinity: Nature$(br)Range: 50 - 100 %%", "ability.arsmagicalegacy.nether_damage_nature.name": "Nether Damage (Nature)", - "ability.arsmagicalegacy.nether_damage_water.description": "Having fun with water magic has made you less suitable for fire. You will take damage in the nether, though not enough to kill you on its own.$(br2)Affinity: Water$(br)Range: 50 - 100 %", + "ability.arsmagicalegacy.nether_damage_water.description": "Having fun with water magic has made you less suitable for fire. You will take damage in the nether, though not enough to kill you on its own.$(br2)Affinity: Water$(br)Range: 50 - 100 %%", "ability.arsmagicalegacy.nether_damage_water.name": "Nether Damage (Water)", - "ability.arsmagicalegacy.night_vision.description": "After using ender spells for quite some time, you gain permanent night vision.$(br2)Affinity: Ender$(br)Range: 50 - 100 %", + "ability.arsmagicalegacy.night_vision.description": "After using ender spells for quite some time, you gain permanent night vision.$(br2)Affinity: Ender$(br)Range: 50 - 100 %%", "ability.arsmagicalegacy.night_vision.name": "Night Vision", - "ability.arsmagicalegacy.poison_resistance.description": "After using ender spells for quite some time, you develop a resistance against toxins.$(br2)Affinity: Ender$(br)Range: 50 - 100 %", + "ability.arsmagicalegacy.poison_resistance.description": "After using ender spells for quite some time, you develop a resistance against toxins.$(br2)Affinity: Ender$(br)Range: 50 - 100 %%", "ability.arsmagicalegacy.poison_resistance.name": "Poison Resistance", - "ability.arsmagicalegacy.regeneration.description": "Becoming one with life, you get a permanent regeneration effect.$(br2)Affinity: Life$(br)Range: 100 %", + "ability.arsmagicalegacy.regeneration.description": "Becoming one with life, you get a permanent regeneration effect.$(br2)Affinity: Life$(br)Range: 100 %%", "ability.arsmagicalegacy.regeneration.name": "Regeneration", - "ability.arsmagicalegacy.resistance.description": "After using earth spells for some time, you develop some physical resistance. As you delve deeper, you notice the resistance getting stronger and stronger.$(br2)Affinity: Earth$(br)Range: 1 - 100 %", + "ability.arsmagicalegacy.resistance.description": "After using earth spells for some time, you develop some physical resistance. As you delve deeper, you notice the resistance getting stronger and stronger.$(br2)Affinity: Earth$(br)Range: 1 - 100 %%", "ability.arsmagicalegacy.resistance.name": "Resistance", - "ability.arsmagicalegacy.saturation.description": "After using nature spells for some time, you feel nourished. As you delve deeper, you notice nourishment getting stronger and stronger.$(br2)Affinity: Nature$(br)Range: 1 - 100 %", + "ability.arsmagicalegacy.saturation.description": "After using nature spells for some time, you feel nourished. As you delve deeper, you notice nourishment getting stronger and stronger.$(br2)Affinity: Nature$(br)Range: 1 - 100 %%", "ability.arsmagicalegacy.saturation.name": "Saturation", - "ability.arsmagicalegacy.slowness.description": "Having fun with ice magic has made you shiver. You move slower.$(br2)Affinity: Ice$(br)Range: 50 - 100 %", + "ability.arsmagicalegacy.slowness.description": "Having fun with ice magic has made you shiver. You move slower.$(br2)Affinity: Ice$(br)Range: 50 - 100 %%", "ability.arsmagicalegacy.slowness.name": "Slowness", - "ability.arsmagicalegacy.smite.description": "After using life spells for some time, you feel an urge to slay the undead. As you delve deeper, you notice your damage towards undeads getting stronger and stronger.$(br2)Affinity: Life$(br)Range: 1 - 100 %", + "ability.arsmagicalegacy.smite.description": "After using life spells for some time, you feel an urge to slay the undead. As you delve deeper, you notice your damage towards undeads getting stronger and stronger.$(br2)Affinity: Life$(br)Range: 1 - 100 %%", "ability.arsmagicalegacy.smite.name": "Smite", - "ability.arsmagicalegacy.speed.description": "After using lightning spells for some time, you develop better running skills. As you delve deeper, you notice your speed becoming faster and faster.$(br2)Affinity: Lightning$(br)Range: 1 - 100 %", + "ability.arsmagicalegacy.speed.description": "After using lightning spells for some time, you develop better running skills. As you delve deeper, you notice your speed becoming faster and faster.$(br2)Affinity: Lightning$(br)Range: 1 - 100 %%", "ability.arsmagicalegacy.speed.name": "Speed", - "ability.arsmagicalegacy.step_assist.description": "Becoming part lightning, you are now able to step up 1-block slopes.$(br2)Affinity: Lightning$(br)Range: 100 %", + "ability.arsmagicalegacy.step_assist.description": "Becoming part lightning, you are now able to step up 1-block slopes.$(br2)Affinity: Lightning$(br)Range: 100 %%", "ability.arsmagicalegacy.step_assist.name": "Step Assist", - "ability.arsmagicalegacy.swim_speed.description": "After using water spells for some time, you develop better swimming skills. As you delve deeper, you notice your speed in water getting faster and faster.$(br2)Affinity: Water$(br)Range: 1 - 100 %", + "ability.arsmagicalegacy.swim_speed.description": "After using water spells for some time, you develop better swimming skills. As you delve deeper, you notice your speed in water getting faster and faster.$(br2)Affinity: Water$(br)Range: 1 - 100 %%", "ability.arsmagicalegacy.swim_speed.name": "Swim Speed", - "ability.arsmagicalegacy.thorns.description": "Becoming one with nature, enemies that hit you now take a bit of damage themselves.$(br2)Affinity: Nature$(br)Range: 100 %", + "ability.arsmagicalegacy.thorns.description": "Becoming one with nature, enemies that hit you now take a bit of damage themselves.$(br2)Affinity: Nature$(br)Range: 100 %%", "ability.arsmagicalegacy.thorns.name": "Thorns", - "ability.arsmagicalegacy.water_damage_fire.description": "Having fun with fire magic has made you less suitable for water. You will take damage in water, though not enough to kill you on its own.$(br2)Affinity: Fire$(br)Range: 50 - 100 %", + "ability.arsmagicalegacy.water_damage_fire.description": "Having fun with fire magic has made you less suitable for water. You will take damage in water, though not enough to kill you on its own.$(br2)Affinity: Fire$(br)Range: 50 - 100 %%", "ability.arsmagicalegacy.water_damage_fire.name": "Water Damage (Fire)", - "ability.arsmagicalegacy.water_damage_lightning.description": "Having fun with lightning magic has made you less suitable for water. You will take damage in water, though not enough to kill you on its own.$(br2)Affinity: Lightning$(br)Range: 50 - 100 %", + "ability.arsmagicalegacy.water_damage_lightning.description": "Having fun with lightning magic has made you less suitable for water. You will take damage in water, though not enough to kill you on its own.$(br2)Affinity: Lightning$(br)Range: 50 - 100 %%", "ability.arsmagicalegacy.water_damage_lightning.name": "Water Damage (Lightning)", - "ability.arsmagicalegacy.water_health_reduction.description": "Toying around with ender magic consumes your life in water. When in water, your maximum health decreases.$(br2)Affinity: Ender$(br)Range: 50 - 100 %$(br)There have been rumors among the villagers of true ender mages that managed to nullify this effect...", + "ability.arsmagicalegacy.water_health_reduction.description": "Toying around with ender magic consumes your life in water. When in water, your maximum health decreases.$(br2)Affinity: Ender$(br)Range: 50 - 100 %%$(br)There have been rumors among the villagers of true ender mages that managed to nullify this effect...", "ability.arsmagicalegacy.water_health_reduction.name": "Water Health Reduction", "affinity.arsmagicalegacy.air": "Air", "affinity.arsmagicalegacy.arcane": "Arcane", @@ -510,18 +510,22 @@ "item.arsmagicalegacy.arcane_compendium.mechanics.etherium.page1.text": "To actually consume the Etherium, you need to link it to the $(l:mechanics/crafting_altar)altar$() by first right-clicking the generator, then the Altar Core with a Crystal Wrench. The distance between generator and Altar Core must not exceed 32 blocks.", "item.arsmagicalegacy.arcane_compendium.mechanics.etherium.page2.text": "If a spell requires Etherium, the generator is properly linked and has the required Etherium amount of the correct type, simply flip the lever on the altar. The required amount of Etherium will be drawn automatically.", "item.arsmagicalegacy.arcane_compendium.mechanics.getting_started.name": "Getting Started", - "item.arsmagicalegacy.arcane_compendium.mechanics.getting_started.page0.text": "Spellcrafting looks complex from a distance, but gets very easy when doing it more often.$(br2)You start by crafting an $(l:blocks/occulus)Occulus$(), placing it down and opening it. Through the Occulus, you can unlock new skills. Skills come in three categories, more on that in a minute.", - "item.arsmagicalegacy.arcane_compendium.mechanics.getting_started.page10.text": "Note that not every combination is allowed in the Inscription Table. Do not worry, though, since you will notice soon enough that you're trying to do something that is not permitted.$(br2)Once you are done, simply take out the book.", - "item.arsmagicalegacy.arcane_compendium.mechanics.getting_started.page11.text": "Now that you have your spell recipe, you can do the final step: crafting the spell at the $(l:mechanics/crafting_altar)Crafting Altar$(). Please refer to its section to find out how to construct it. $(br2)To start crafting the spell, put the recipe onto the altar's lectern. The items you need to throw in will appear above it, always starting with a $(l:items/runes)Blank Rune$() and ending with a $(l:items/spell_parchment)Spell Parchment$().", - "item.arsmagicalegacy.arcane_compendium.mechanics.getting_started.page12.text": "When first using the spell, you can choose an icon and a name for the spell. After that, you're done! It is heavily recommended to at least read the other chapters in this category, as they cover most things to know in magic.$(br2)Happy spellcasting!", + "item.arsmagicalegacy.arcane_compendium.mechanics.getting_started.page0.text": "Spellcrafting looks complex from a distance, but gets very easy when doing it more often.$(br2)You start by crafting an $(l:blocks/occulus)Occulus$(), placing it down and opening it. Through the Occulus, you can unlock new skills. Skills come in four categories, more on that in a minute.", + "item.arsmagicalegacy.arcane_compendium.mechanics.getting_started.page12.text": "Note that not every combination is allowed in the Inscription Table. Do not worry, though, since you will notice soon enough that you're trying to do something that is not permitted.$(br2)Once you are done, simply take out the book.", + "item.arsmagicalegacy.arcane_compendium.mechanics.getting_started.page13.text": "Now that you have your spell recipe, you can do the final step: crafting the spell at the $(l:mechanics/crafting_altar)Crafting Altar$(). Please refer to its section to find out how to construct it. $(br2)To start crafting the spell, put the recipe onto the altar's lectern. The items you need to throw in will appear above it, always starting with a $(l:items/runes)Blank Rune$() and ending with a $(l:items/spell_parchment)Spell Parchment$().", + "item.arsmagicalegacy.arcane_compendium.mechanics.getting_started.page14.text": "When first using the spell, you can choose an icon and a name for the spell. After that, you're done! It is heavily recommended to at least read the other chapters in this category, as they cover most things to know in magic.$(br2)Happy spellcasting!", "item.arsmagicalegacy.arcane_compendium.mechanics.getting_started.page2.text": "The first category of skills, shapes, determine how the spell is cast. For example, $(l:shapes/self)Self$() means that the spell is cast onto yourself, while $(l:shapes/projectile)Projectile$() shoots a projectile that casts the spell on whatever it hits.$(br2)Shapes have a square outline in the Occulus.", "item.arsmagicalegacy.arcane_compendium.mechanics.getting_started.page2.title": "Shapes", "item.arsmagicalegacy.arcane_compendium.mechanics.getting_started.page3.text": "The second skill category, the components, represent what the spell does. For instance, $(l:components/physical_damage)Physical Damage$() acts as if the spell hit the target with a sword, while $(l:components/dig)Dig$() breaks the targeted block. As you may have guessed, some components only affect blocks, some only affect mobs, some affect both, and very few affect neither, instead doing something else entirely.$(br2)Components have an octagonal outline in the Occulus.", "item.arsmagicalegacy.arcane_compendium.mechanics.getting_started.page3.title": "Components", - "item.arsmagicalegacy.arcane_compendium.mechanics.getting_started.page4.text": "And lastly, modifiers. Modifiers can affect both shapes and components, but not every combination will turn out to actually have an effect (what sense would $(l:components/fire_damage)Fire Damage$() + $(l:modifiers/gravity)Gravity$() make?) The book tells you most, but not all useful combinations.$(br2)Modifiers have a rotated square outline in the Occulus.", + "item.arsmagicalegacy.arcane_compendium.mechanics.getting_started.page4.text": "Next up, modifiers. Modifiers can affect both shapes and components, but not every combination will turn out to actually have an effect (what sense would $(l:components/fire_damage)Fire Damage$() + $(l:modifiers/gravity)Gravity$() make?) The book tells you most, but not all useful combinations.$(br2)Modifiers have a rotated square outline in the Occulus.", "item.arsmagicalegacy.arcane_compendium.mechanics.getting_started.page4.title": "Modifiers", - "item.arsmagicalegacy.arcane_compendium.mechanics.getting_started.page5.text": "At this point, you may rightfully ask yourself: Why should I learn all this? We'll catch up to this in a moment. For now, the next thing you need is an $(l:blocks/inscription_table)Inscription Table$(). The Inscription Table is where you will assemble your spell. Since this can be complex for novices, it will be explained in detail on the following pages.", - "item.arsmagicalegacy.arcane_compendium.mechanics.getting_started.page7.text": "1) The Source Area contains all skills you currently know. The search bar can be used to quickly find the part you want.$(br)2) A slot that takes in a Book & Quill. The spell recipe will be written onto this book.$(br)3) A total of five brown squares, the so-called $(l:mechanics/shape_groups)shape group$() areas. You can drag shapes and modifiers here. For the beginning, you should only be using the first one.$(br)4) The spell grammar section. This is where components and component-related modifiers go.", + "item.arsmagicalegacy.arcane_compendium.mechanics.getting_started.page5.text": "And finally, talents. Talents are not regular spell parts, instead, they are permanent unlockables that boost the player's capability to perform magic in different ways.$(br2)Talents have an octagonal shape, like components. They can be distinguished from them by looking at the tab: All talents are in the Occulus's Talents tab, and all octagonal parts in the Talents tab are talent skills.", + "item.arsmagicalegacy.arcane_compendium.mechanics.getting_started.page5.title": "Talents", + "item.arsmagicalegacy.arcane_compendium.mechanics.getting_started.page6.text": "A word should also go to the Affinity tab of the Occulus. This tab displays your affinity depths. It would be too complex to explain this here, so for further reading, please consult the $(l:affinities/affinities)affinity chapter$().", + "item.arsmagicalegacy.arcane_compendium.mechanics.getting_started.page6.title": "Affinities", + "item.arsmagicalegacy.arcane_compendium.mechanics.getting_started.page7.text": "At this point, you may rightfully ask yourself: Why should I learn all this? We'll catch up to this in a moment. For now, the next thing you need is an $(l:blocks/inscription_table)Inscription Table$(). The Inscription Table is where you will assemble your spell. Since this can be complex for novices, it will be explained in detail on the following pages.", + "item.arsmagicalegacy.arcane_compendium.mechanics.getting_started.page8.text": "1) The Source Area contains all skills you currently know.$(br)2) A slot that takes in a Book & Quill. The spell recipe will be written onto this book.$(br)3) A total of five brown squares, the so-called $(l:mechanics/shape_groups)shape group$() areas. You can drag shapes and modifiers here. For the beginning, you should only be using the first one.$(br)4) The spell grammar section. This is where components and component-related modifiers go.", "item.arsmagicalegacy.arcane_compendium.mechanics.liquid_essence.name": "Liquid Essence", "item.arsmagicalegacy.arcane_compendium.mechanics.liquid_essence.page0.text": "Liquid Essence is a water-like substance that can rarely be found in plains and plains-like environments. For the most part, it acts exactly like water would, though it cannot be used to waterlog blocks, grow kelp, create bubble columns or other, rather exotic appliances.", "item.arsmagicalegacy.arcane_compendium.mechanics.liquid_essence.page1.text": "Liquid Essence can be processed in an $(l:blocks/obelisk)Obelisk$() to create neutral $(l:mechanics/etherium)Etherium$(). One bucket of Liquid Essence is worth 1000 Etherium (or 10 units of $(l:blocks/ores#vinteum)vinteum$()).", @@ -535,7 +539,7 @@ "item.arsmagicalegacy.arcane_compendium.modifiers.bounce.page0.text": "Causes $(l:shapes/projectile)spell projectiles$() to bounce off surfaces.", "item.arsmagicalegacy.arcane_compendium.modifiers.damage.page0.text": "Amplifies the damage dealt by spells, or the healing done by damage spells to the undead.", "item.arsmagicalegacy.arcane_compendium.modifiers.description": "", - "item.arsmagicalegacy.arcane_compendium.modifiers.dismembering.page0.text": "You like souvenirs so much that you have discovered how to make your damaging spells leave some pieces intact.$(br2)Each modifier adds a 5% chance to drop a head when defeating an enemy.", + "item.arsmagicalegacy.arcane_compendium.modifiers.dismembering.page0.text": "You like souvenirs so much that you have discovered how to make your damaging spells leave some pieces intact.$(br2)Each modifier adds a 5%% chance to drop a head when defeating an enemy.", "item.arsmagicalegacy.arcane_compendium.modifiers.duration.page0.text": "Enhances the duration of all effect spells, and increases the lifetime of $(l:shapes/projectile)projectiles$(), $(l:shapes/wall)walls$(), $(l:shapes/wave)waves$() and $(l:shapes/zone)zones.", "item.arsmagicalegacy.arcane_compendium.modifiers.effect_power.page0.text": "You can put more power into your effects. Each modifier added increases the level of the effect applied by one.", "item.arsmagicalegacy.arcane_compendium.modifiers.gravity.page0.text": "$(l:shapes/zone)Zones$() and $(l:shapes/projectile)projectiles$() will be affected by gravity.", @@ -571,6 +575,15 @@ "item.arsmagicalegacy.arcane_compendium.shapes.wall.page0.text": "You can manifest a wall in front of you.$(br2)Walls function similarly to $(l:shapes/zone)zones$(), but with a different form.", "item.arsmagicalegacy.arcane_compendium.shapes.wave.page0.text": "You can project a wave of magic in front of you that rolls forward, applying its effect to everything in its path.", "item.arsmagicalegacy.arcane_compendium.shapes.zone.page0.text": "You have learned to focus your will into an area effect that will persist for a time.", + "item.arsmagicalegacy.arcane_compendium.talents.affinity_gains_boost.page0.text": "You gain a 5%% boost in affinity gains.", + "item.arsmagicalegacy.arcane_compendium.talents.augmented_casting.page0.text": "All your spells gain a little boost. A little more damage, a little more duration, a little more speed, a little bit of everything.", + "item.arsmagicalegacy.arcane_compendium.talents.description": "", + "item.arsmagicalegacy.arcane_compendium.talents.mana_regen_boost_1.page0.text": "Your mana regeneration is boosted by 5%%.", + "item.arsmagicalegacy.arcane_compendium.talents.mana_regen_boost_2.page0.text": "Your mana regeneration is boosted by 10%%. This replaces the boost of $(l:talents/mana_regen_1)Mana Regen I$().", + "item.arsmagicalegacy.arcane_compendium.talents.mana_regen_boost_3.page0.text": "Your mana regeneration is boosted by 15%%. This replaces the boosts of $(l:talents/mana_regen_1)Mana Regen I$() and $(l:talents/mana_regen_2)Mana Regen II$().", + "item.arsmagicalegacy.arcane_compendium.talents.name": "Talents", + "item.arsmagicalegacy.arcane_compendium.talents.shield_overload.page0.text": "When your mana bar is full, excess mana regenerated turns into a shield that protects you from 5%% of all incoming damage.", + "item.arsmagicalegacy.arcane_compendium.talents.spell_motion.page0.text": "Manipulating the winds around you, you have found a way to move at normal speed while using spells.", "item.arsmagicalegacy.arcane_compound": "Arcane Compound", "item.arsmagicalegacy.arcane_guardian_spawn_egg": "Arcane Guardian Spawn Egg", "item.arsmagicalegacy.battlemage_boots": "Battlemage Boots", @@ -745,6 +758,8 @@ "screen.arsmagicalegacy.spell_customization.title": "Spell Customization", "skill.arsmagicalegacy.absorption.description": "Like a slightly flimsier shield.", "skill.arsmagicalegacy.absorption.name": "Absorption", + "skill.arsmagicalegacy.affinity_gains_boost.description": "Let's skip to the part where I have superpowers.", + "skill.arsmagicalegacy.affinity_gains_boost.name": "Affinity Gains Boost", "skill.arsmagicalegacy.agility.description": "Seems like you won't be catching me anytime soon.", "skill.arsmagicalegacy.agility.name": "Agility", "skill.arsmagicalegacy.aoe.description": "All around me!", @@ -753,6 +768,8 @@ "skill.arsmagicalegacy.astral_distortion.name": "Astral Distortion", "skill.arsmagicalegacy.attract.description": "You go there.", "skill.arsmagicalegacy.attract.name": "Attract", + "skill.arsmagicalegacy.augmented_casting.description": "Upgrades, people, upgrades.", + "skill.arsmagicalegacy.augmented_casting.name": "Augmented Casting", "skill.arsmagicalegacy.banish_rain.description": "Come back later. Or don't. It would be kind.", "skill.arsmagicalegacy.banish_rain.name": "Banish Rain", "skill.arsmagicalegacy.beam.description": "Beam me up, Scotty!", @@ -871,6 +888,12 @@ "skill.arsmagicalegacy.mana_blast.name": "Mana Blast", "skill.arsmagicalegacy.mana_drain.description": "So much pools at my disposal!", "skill.arsmagicalegacy.mana_drain.name": "Mana Drain", + "skill.arsmagicalegacy.mana_regen_boost_1.description": "And I would gain 500 mana...", + "skill.arsmagicalegacy.mana_regen_boost_1.name": "Mana Regeneration I", + "skill.arsmagicalegacy.mana_regen_boost_2.description": "...and I would gain 500 more...", + "skill.arsmagicalegacy.mana_regen_boost_2.name": "Mana Regeneration II", + "skill.arsmagicalegacy.mana_regen_boost_3.description": "...just to get back every single mana point I have consumed before.", + "skill.arsmagicalegacy.mana_regen_boost_3.name": "Mana Regeneration III", "skill.arsmagicalegacy.mining_power.description": "Who needs diamonds?", "skill.arsmagicalegacy.mining_power.name": "Mining Power", "skill.arsmagicalegacy.moonrise.description": "Full moon.", @@ -913,6 +936,8 @@ "skill.arsmagicalegacy.self.name": "Self", "skill.arsmagicalegacy.shield.description": "Don't worry about the weight, it's magic.", "skill.arsmagicalegacy.shield.name": "Shield", + "skill.arsmagicalegacy.shield_overload.description": "No more wasting excess mana.", + "skill.arsmagicalegacy.shield_overload.name": "Shield Overload", "skill.arsmagicalegacy.shrink.description": "Looks like I'm smaller now!", "skill.arsmagicalegacy.shrink.name": "Shrink", "skill.arsmagicalegacy.silence.description": "No talking! (Or casting in this case!)", @@ -925,6 +950,8 @@ "skill.arsmagicalegacy.slowness.name": "Slowness", "skill.arsmagicalegacy.solar.description": "Sun power!", "skill.arsmagicalegacy.solar.name": "Solar", + "skill.arsmagicalegacy.spell_motion.description": "I like to move it, move it.", + "skill.arsmagicalegacy.spell_motion.name": "Spell Motion", "skill.arsmagicalegacy.storm.description": "It's raining men! Hallelujah!", "skill.arsmagicalegacy.storm.name": "Storm", "skill.arsmagicalegacy.summon.description": "Rise, creation!", diff --git a/src/main/generated/assets/arsmagicalegacy/patchouli_books/arcane_compendium/en_us/categories/talents.json b/src/main/generated/assets/arsmagicalegacy/patchouli_books/arcane_compendium/en_us/categories/talents.json new file mode 100644 index 000000000..c7edae757 --- /dev/null +++ b/src/main/generated/assets/arsmagicalegacy/patchouli_books/arcane_compendium/en_us/categories/talents.json @@ -0,0 +1,6 @@ +{ + "description": "item.arsmagicalegacy.arcane_compendium.talents.description", + "icon": "arsmagicalegacy:textures/icon/skill/mana_regen_boost_1.png", + "name": "item.arsmagicalegacy.arcane_compendium.talents.name", + "sortnum": 7 +} \ No newline at end of file diff --git a/src/main/generated/assets/arsmagicalegacy/patchouli_books/arcane_compendium/en_us/entries/mechanics/getting_started.json b/src/main/generated/assets/arsmagicalegacy/patchouli_books/arcane_compendium/en_us/entries/mechanics/getting_started.json index c0d0b0196..ca0368495 100644 --- a/src/main/generated/assets/arsmagicalegacy/patchouli_books/arcane_compendium/en_us/entries/mechanics/getting_started.json +++ b/src/main/generated/assets/arsmagicalegacy/patchouli_books/arcane_compendium/en_us/entries/mechanics/getting_started.json @@ -12,7 +12,7 @@ "images": [ "arsmagicalegacy:patchouli_books/arcane_compendium/en_us/images/occulus.png" ], - "text": "The Occulus has four tabs, the first three of which are skill tree tabs." + "text": "The Occulus has five tabs, the first four of which are skill tree tabs." }, { "type": "patchouli:text", @@ -31,18 +31,29 @@ }, { "type": "patchouli:text", - "text": "item.arsmagicalegacy.arcane_compendium.mechanics.getting_started.page5.text" + "text": "item.arsmagicalegacy.arcane_compendium.mechanics.getting_started.page5.text", + "title": "item.arsmagicalegacy.arcane_compendium.mechanics.getting_started.page5.title" }, { - "type": "patchouli:image", - "images": [ - "arsmagicalegacy:patchouli_books/arcane_compendium/en_us/images/inscription_table_1.png" - ] + "type": "patchouli:text", + "text": "item.arsmagicalegacy.arcane_compendium.mechanics.getting_started.page6.text", + "title": "item.arsmagicalegacy.arcane_compendium.mechanics.getting_started.page6.title" }, { "type": "patchouli:text", "text": "item.arsmagicalegacy.arcane_compendium.mechanics.getting_started.page7.text" }, + { + "type": "patchouli:text", + "text": "item.arsmagicalegacy.arcane_compendium.mechanics.getting_started.page8.text" + }, + { + "type": "patchouli:image", + "images": [ + "arsmagicalegacy:patchouli_books/arcane_compendium/en_us/images/inscription_table_1.png" + ], + "text": "The search bar can be used to quickly find a spell part. The name bar can be used to name your spell, this is not required though." + }, { "type": "patchouli:image", "images": [ @@ -59,15 +70,15 @@ }, { "type": "patchouli:text", - "text": "item.arsmagicalegacy.arcane_compendium.mechanics.getting_started.page10.text" + "text": "item.arsmagicalegacy.arcane_compendium.mechanics.getting_started.page12.text" }, { "type": "patchouli:text", - "text": "item.arsmagicalegacy.arcane_compendium.mechanics.getting_started.page11.text" + "text": "item.arsmagicalegacy.arcane_compendium.mechanics.getting_started.page13.text" }, { "type": "patchouli:text", - "text": "item.arsmagicalegacy.arcane_compendium.mechanics.getting_started.page12.text" + "text": "item.arsmagicalegacy.arcane_compendium.mechanics.getting_started.page14.text" } ], "priority": true diff --git a/src/main/generated/assets/arsmagicalegacy/patchouli_books/arcane_compendium/en_us/entries/talents/affinity_gains_boost.json b/src/main/generated/assets/arsmagicalegacy/patchouli_books/arcane_compendium/en_us/entries/talents/affinity_gains_boost.json new file mode 100644 index 000000000..34c3843d4 --- /dev/null +++ b/src/main/generated/assets/arsmagicalegacy/patchouli_books/arcane_compendium/en_us/entries/talents/affinity_gains_boost.json @@ -0,0 +1,12 @@ +{ + "advancement": "arsmagicalegacy:book/affinity_gains_boost", + "category": "arsmagicalegacy:talents", + "icon": "arsmagicalegacy:textures/icon/skill/affinity_gains_boost.png", + "name": "skill.arsmagicalegacy.affinity_gains_boost.name", + "pages": [ + { + "type": "patchouli:text", + "text": "item.arsmagicalegacy.arcane_compendium.talents.affinity_gains_boost.page0.text" + } + ] +} \ No newline at end of file diff --git a/src/main/generated/assets/arsmagicalegacy/patchouli_books/arcane_compendium/en_us/entries/talents/augmented_casting.json b/src/main/generated/assets/arsmagicalegacy/patchouli_books/arcane_compendium/en_us/entries/talents/augmented_casting.json new file mode 100644 index 000000000..8d1fb381c --- /dev/null +++ b/src/main/generated/assets/arsmagicalegacy/patchouli_books/arcane_compendium/en_us/entries/talents/augmented_casting.json @@ -0,0 +1,12 @@ +{ + "advancement": "arsmagicalegacy:book/augmented_casting", + "category": "arsmagicalegacy:talents", + "icon": "arsmagicalegacy:textures/icon/skill/augmented_casting.png", + "name": "skill.arsmagicalegacy.augmented_casting.name", + "pages": [ + { + "type": "patchouli:text", + "text": "item.arsmagicalegacy.arcane_compendium.talents.augmented_casting.page0.text" + } + ] +} \ No newline at end of file diff --git a/src/main/generated/assets/arsmagicalegacy/patchouli_books/arcane_compendium/en_us/entries/talents/mana_regen_boost_1.json b/src/main/generated/assets/arsmagicalegacy/patchouli_books/arcane_compendium/en_us/entries/talents/mana_regen_boost_1.json new file mode 100644 index 000000000..a9a2ed975 --- /dev/null +++ b/src/main/generated/assets/arsmagicalegacy/patchouli_books/arcane_compendium/en_us/entries/talents/mana_regen_boost_1.json @@ -0,0 +1,12 @@ +{ + "advancement": "arsmagicalegacy:book/mana_regen_boost_1", + "category": "arsmagicalegacy:talents", + "icon": "arsmagicalegacy:textures/icon/skill/mana_regen_boost_1.png", + "name": "skill.arsmagicalegacy.mana_regen_boost_1.name", + "pages": [ + { + "type": "patchouli:text", + "text": "item.arsmagicalegacy.arcane_compendium.talents.mana_regen_boost_1.page0.text" + } + ] +} \ No newline at end of file diff --git a/src/main/generated/assets/arsmagicalegacy/patchouli_books/arcane_compendium/en_us/entries/talents/mana_regen_boost_2.json b/src/main/generated/assets/arsmagicalegacy/patchouli_books/arcane_compendium/en_us/entries/talents/mana_regen_boost_2.json new file mode 100644 index 000000000..f4175a892 --- /dev/null +++ b/src/main/generated/assets/arsmagicalegacy/patchouli_books/arcane_compendium/en_us/entries/talents/mana_regen_boost_2.json @@ -0,0 +1,12 @@ +{ + "advancement": "arsmagicalegacy:book/mana_regen_boost_2", + "category": "arsmagicalegacy:talents", + "icon": "arsmagicalegacy:textures/icon/skill/mana_regen_boost_2.png", + "name": "skill.arsmagicalegacy.mana_regen_boost_2.name", + "pages": [ + { + "type": "patchouli:text", + "text": "item.arsmagicalegacy.arcane_compendium.talents.mana_regen_boost_2.page0.text" + } + ] +} \ No newline at end of file diff --git a/src/main/generated/assets/arsmagicalegacy/patchouli_books/arcane_compendium/en_us/entries/talents/mana_regen_boost_3.json b/src/main/generated/assets/arsmagicalegacy/patchouli_books/arcane_compendium/en_us/entries/talents/mana_regen_boost_3.json new file mode 100644 index 000000000..3a1b6181d --- /dev/null +++ b/src/main/generated/assets/arsmagicalegacy/patchouli_books/arcane_compendium/en_us/entries/talents/mana_regen_boost_3.json @@ -0,0 +1,12 @@ +{ + "advancement": "arsmagicalegacy:book/mana_regen_boost_3", + "category": "arsmagicalegacy:talents", + "icon": "arsmagicalegacy:textures/icon/skill/mana_regen_boost_3.png", + "name": "skill.arsmagicalegacy.mana_regen_boost_3.name", + "pages": [ + { + "type": "patchouli:text", + "text": "item.arsmagicalegacy.arcane_compendium.talents.mana_regen_boost_3.page0.text" + } + ] +} \ No newline at end of file diff --git a/src/main/generated/assets/arsmagicalegacy/patchouli_books/arcane_compendium/en_us/entries/talents/shield_overload.json b/src/main/generated/assets/arsmagicalegacy/patchouli_books/arcane_compendium/en_us/entries/talents/shield_overload.json new file mode 100644 index 000000000..a8451547e --- /dev/null +++ b/src/main/generated/assets/arsmagicalegacy/patchouli_books/arcane_compendium/en_us/entries/talents/shield_overload.json @@ -0,0 +1,12 @@ +{ + "advancement": "arsmagicalegacy:book/shield_overload", + "category": "arsmagicalegacy:talents", + "icon": "arsmagicalegacy:textures/icon/skill/shield_overload.png", + "name": "skill.arsmagicalegacy.shield_overload.name", + "pages": [ + { + "type": "patchouli:text", + "text": "item.arsmagicalegacy.arcane_compendium.talents.shield_overload.page0.text" + } + ] +} \ No newline at end of file diff --git a/src/main/generated/assets/arsmagicalegacy/patchouli_books/arcane_compendium/en_us/entries/talents/spell_motion.json b/src/main/generated/assets/arsmagicalegacy/patchouli_books/arcane_compendium/en_us/entries/talents/spell_motion.json new file mode 100644 index 000000000..8f5230bcf --- /dev/null +++ b/src/main/generated/assets/arsmagicalegacy/patchouli_books/arcane_compendium/en_us/entries/talents/spell_motion.json @@ -0,0 +1,12 @@ +{ + "advancement": "arsmagicalegacy:book/spell_motion", + "category": "arsmagicalegacy:talents", + "icon": "arsmagicalegacy:textures/icon/skill/spell_motion.png", + "name": "skill.arsmagicalegacy.spell_motion.name", + "pages": [ + { + "type": "patchouli:text", + "text": "item.arsmagicalegacy.arcane_compendium.talents.spell_motion.page0.text" + } + ] +} \ No newline at end of file diff --git a/src/main/generated/data/arsmagicalegacy/advancements/book/affinity_gains_boost.json b/src/main/generated/data/arsmagicalegacy/advancements/book/affinity_gains_boost.json new file mode 100644 index 000000000..723411c90 --- /dev/null +++ b/src/main/generated/data/arsmagicalegacy/advancements/book/affinity_gains_boost.json @@ -0,0 +1,16 @@ +{ + "parent": "arsmagicalegacy:book/root", + "criteria": { + "knows": { + "conditions": { + "skill": "arsmagicalegacy:affinity_gains_boost" + }, + "trigger": "arsmagicalegacy:player_learned_skill" + } + }, + "requirements": [ + [ + "knows" + ] + ] +} \ No newline at end of file diff --git a/src/main/generated/data/arsmagicalegacy/advancements/book/augmented_casting.json b/src/main/generated/data/arsmagicalegacy/advancements/book/augmented_casting.json new file mode 100644 index 000000000..676840b31 --- /dev/null +++ b/src/main/generated/data/arsmagicalegacy/advancements/book/augmented_casting.json @@ -0,0 +1,16 @@ +{ + "parent": "arsmagicalegacy:book/root", + "criteria": { + "knows": { + "conditions": { + "skill": "arsmagicalegacy:augmented_casting" + }, + "trigger": "arsmagicalegacy:player_learned_skill" + } + }, + "requirements": [ + [ + "knows" + ] + ] +} \ No newline at end of file diff --git a/src/main/generated/data/arsmagicalegacy/advancements/book/mana_regen_boost_1.json b/src/main/generated/data/arsmagicalegacy/advancements/book/mana_regen_boost_1.json new file mode 100644 index 000000000..45f958148 --- /dev/null +++ b/src/main/generated/data/arsmagicalegacy/advancements/book/mana_regen_boost_1.json @@ -0,0 +1,16 @@ +{ + "parent": "arsmagicalegacy:book/root", + "criteria": { + "knows": { + "conditions": { + "skill": "arsmagicalegacy:mana_regen_boost_1" + }, + "trigger": "arsmagicalegacy:player_learned_skill" + } + }, + "requirements": [ + [ + "knows" + ] + ] +} \ No newline at end of file diff --git a/src/main/generated/data/arsmagicalegacy/advancements/book/mana_regen_boost_2.json b/src/main/generated/data/arsmagicalegacy/advancements/book/mana_regen_boost_2.json new file mode 100644 index 000000000..2cc3eaf04 --- /dev/null +++ b/src/main/generated/data/arsmagicalegacy/advancements/book/mana_regen_boost_2.json @@ -0,0 +1,16 @@ +{ + "parent": "arsmagicalegacy:book/root", + "criteria": { + "knows": { + "conditions": { + "skill": "arsmagicalegacy:mana_regen_boost_2" + }, + "trigger": "arsmagicalegacy:player_learned_skill" + } + }, + "requirements": [ + [ + "knows" + ] + ] +} \ No newline at end of file diff --git a/src/main/generated/data/arsmagicalegacy/advancements/book/mana_regen_boost_3.json b/src/main/generated/data/arsmagicalegacy/advancements/book/mana_regen_boost_3.json new file mode 100644 index 000000000..f4ddeeac3 --- /dev/null +++ b/src/main/generated/data/arsmagicalegacy/advancements/book/mana_regen_boost_3.json @@ -0,0 +1,16 @@ +{ + "parent": "arsmagicalegacy:book/root", + "criteria": { + "knows": { + "conditions": { + "skill": "arsmagicalegacy:mana_regen_boost_3" + }, + "trigger": "arsmagicalegacy:player_learned_skill" + } + }, + "requirements": [ + [ + "knows" + ] + ] +} \ No newline at end of file diff --git a/src/main/generated/data/arsmagicalegacy/advancements/book/shield_overload.json b/src/main/generated/data/arsmagicalegacy/advancements/book/shield_overload.json new file mode 100644 index 000000000..01a99b2c6 --- /dev/null +++ b/src/main/generated/data/arsmagicalegacy/advancements/book/shield_overload.json @@ -0,0 +1,16 @@ +{ + "parent": "arsmagicalegacy:book/root", + "criteria": { + "knows": { + "conditions": { + "skill": "arsmagicalegacy:shield_overload" + }, + "trigger": "arsmagicalegacy:player_learned_skill" + } + }, + "requirements": [ + [ + "knows" + ] + ] +} \ No newline at end of file diff --git a/src/main/generated/data/arsmagicalegacy/advancements/book/spell_motion.json b/src/main/generated/data/arsmagicalegacy/advancements/book/spell_motion.json new file mode 100644 index 000000000..9080f2f9e --- /dev/null +++ b/src/main/generated/data/arsmagicalegacy/advancements/book/spell_motion.json @@ -0,0 +1,16 @@ +{ + "parent": "arsmagicalegacy:book/root", + "criteria": { + "knows": { + "conditions": { + "skill": "arsmagicalegacy:spell_motion" + }, + "trigger": "arsmagicalegacy:player_learned_skill" + } + }, + "requirements": [ + [ + "knows" + ] + ] +} \ No newline at end of file diff --git a/src/main/generated/data/arsmagicalegacy/arsmagicalegacy/occulus_tab/affinity.json b/src/main/generated/data/arsmagicalegacy/arsmagicalegacy/occulus_tab/affinity.json index 7f7908311..df72a062e 100644 --- a/src/main/generated/data/arsmagicalegacy/arsmagicalegacy/occulus_tab/affinity.json +++ b/src/main/generated/data/arsmagicalegacy/arsmagicalegacy/occulus_tab/affinity.json @@ -1,4 +1,4 @@ { - "index": 3, + "index": 4, "renderer": "com.github.minecraftschurlimods.arsmagicalegacy.client.gui.occulus.OcculusAffinityTabRenderer" } \ No newline at end of file diff --git a/src/main/generated/data/arsmagicalegacy/arsmagicalegacy/occulus_tab/talent.json b/src/main/generated/data/arsmagicalegacy/arsmagicalegacy/occulus_tab/talent.json new file mode 100644 index 000000000..6f11cb2bd --- /dev/null +++ b/src/main/generated/data/arsmagicalegacy/arsmagicalegacy/occulus_tab/talent.json @@ -0,0 +1,5 @@ +{ + "index": 3, + "start_x": 91, + "start_y": 46 +} \ No newline at end of file diff --git a/src/main/generated/data/arsmagicalegacy/arsmagicalegacy/ritual/unlock_blizzard.json b/src/main/generated/data/arsmagicalegacy/arsmagicalegacy/ritual/unlock_blizzard.json index 990439ad9..7cae902e3 100644 --- a/src/main/generated/data/arsmagicalegacy/arsmagicalegacy/ritual/unlock_blizzard.json +++ b/src/main/generated/data/arsmagicalegacy/arsmagicalegacy/ritual/unlock_blizzard.json @@ -1,7 +1,7 @@ { "effect": { "type": "arsmagicalegacy:learn_skill", - "spell_part": "arsmagicalegacy:blizzard" + "skill": "arsmagicalegacy:blizzard" }, "requirements": [], "trigger": { diff --git a/src/main/generated/data/arsmagicalegacy/arsmagicalegacy/ritual/unlock_daylight.json b/src/main/generated/data/arsmagicalegacy/arsmagicalegacy/ritual/unlock_daylight.json index 78cbea41c..059481732 100644 --- a/src/main/generated/data/arsmagicalegacy/arsmagicalegacy/ritual/unlock_daylight.json +++ b/src/main/generated/data/arsmagicalegacy/arsmagicalegacy/ritual/unlock_daylight.json @@ -1,7 +1,7 @@ { "effect": { "type": "arsmagicalegacy:learn_skill", - "spell_part": "arsmagicalegacy:daylight" + "skill": "arsmagicalegacy:daylight" }, "requirements": [], "trigger": { diff --git a/src/main/generated/data/arsmagicalegacy/arsmagicalegacy/ritual/unlock_dismembering.json b/src/main/generated/data/arsmagicalegacy/arsmagicalegacy/ritual/unlock_dismembering.json index 1b5236022..b313ce3e2 100644 --- a/src/main/generated/data/arsmagicalegacy/arsmagicalegacy/ritual/unlock_dismembering.json +++ b/src/main/generated/data/arsmagicalegacy/arsmagicalegacy/ritual/unlock_dismembering.json @@ -1,7 +1,7 @@ { "effect": { "type": "arsmagicalegacy:learn_skill", - "spell_part": "arsmagicalegacy:dismembering" + "skill": "arsmagicalegacy:dismembering" }, "requirements": [], "trigger": { diff --git a/src/main/generated/data/arsmagicalegacy/arsmagicalegacy/ritual/unlock_effect_power.json b/src/main/generated/data/arsmagicalegacy/arsmagicalegacy/ritual/unlock_effect_power.json index 2858a0071..4cb5a23f9 100644 --- a/src/main/generated/data/arsmagicalegacy/arsmagicalegacy/ritual/unlock_effect_power.json +++ b/src/main/generated/data/arsmagicalegacy/arsmagicalegacy/ritual/unlock_effect_power.json @@ -1,7 +1,7 @@ { "effect": { "type": "arsmagicalegacy:learn_skill", - "spell_part": "arsmagicalegacy:effect_power" + "skill": "arsmagicalegacy:effect_power" }, "requirements": [], "trigger": { diff --git a/src/main/generated/data/arsmagicalegacy/arsmagicalegacy/ritual/unlock_falling_star.json b/src/main/generated/data/arsmagicalegacy/arsmagicalegacy/ritual/unlock_falling_star.json index 2bb4622a7..9d38726b9 100644 --- a/src/main/generated/data/arsmagicalegacy/arsmagicalegacy/ritual/unlock_falling_star.json +++ b/src/main/generated/data/arsmagicalegacy/arsmagicalegacy/ritual/unlock_falling_star.json @@ -1,7 +1,7 @@ { "effect": { "type": "arsmagicalegacy:learn_skill", - "spell_part": "arsmagicalegacy:falling_star" + "skill": "arsmagicalegacy:falling_star" }, "requirements": [], "trigger": { diff --git a/src/main/generated/data/arsmagicalegacy/arsmagicalegacy/ritual/unlock_fire_rain.json b/src/main/generated/data/arsmagicalegacy/arsmagicalegacy/ritual/unlock_fire_rain.json index a35a76667..087098c26 100644 --- a/src/main/generated/data/arsmagicalegacy/arsmagicalegacy/ritual/unlock_fire_rain.json +++ b/src/main/generated/data/arsmagicalegacy/arsmagicalegacy/ritual/unlock_fire_rain.json @@ -1,7 +1,7 @@ { "effect": { "type": "arsmagicalegacy:learn_skill", - "spell_part": "arsmagicalegacy:fire_rain" + "skill": "arsmagicalegacy:fire_rain" }, "requirements": [], "trigger": { diff --git a/src/main/generated/data/arsmagicalegacy/arsmagicalegacy/ritual/unlock_health_boost.json b/src/main/generated/data/arsmagicalegacy/arsmagicalegacy/ritual/unlock_health_boost.json index 8a1b9cb2a..8e566d50a 100644 --- a/src/main/generated/data/arsmagicalegacy/arsmagicalegacy/ritual/unlock_health_boost.json +++ b/src/main/generated/data/arsmagicalegacy/arsmagicalegacy/ritual/unlock_health_boost.json @@ -1,7 +1,7 @@ { "effect": { "type": "arsmagicalegacy:learn_skill", - "spell_part": "arsmagicalegacy:health_boost" + "skill": "arsmagicalegacy:health_boost" }, "requirements": [], "trigger": { diff --git a/src/main/generated/data/arsmagicalegacy/arsmagicalegacy/ritual/unlock_mana_blast.json b/src/main/generated/data/arsmagicalegacy/arsmagicalegacy/ritual/unlock_mana_blast.json index f8c2e49fa..ceb090709 100644 --- a/src/main/generated/data/arsmagicalegacy/arsmagicalegacy/ritual/unlock_mana_blast.json +++ b/src/main/generated/data/arsmagicalegacy/arsmagicalegacy/ritual/unlock_mana_blast.json @@ -1,7 +1,7 @@ { "effect": { "type": "arsmagicalegacy:learn_skill", - "spell_part": "arsmagicalegacy:mana_blast" + "skill": "arsmagicalegacy:mana_blast" }, "requirements": [], "trigger": { diff --git a/src/main/generated/data/arsmagicalegacy/arsmagicalegacy/ritual/unlock_moonrise.json b/src/main/generated/data/arsmagicalegacy/arsmagicalegacy/ritual/unlock_moonrise.json index 6504a361a..182521e27 100644 --- a/src/main/generated/data/arsmagicalegacy/arsmagicalegacy/ritual/unlock_moonrise.json +++ b/src/main/generated/data/arsmagicalegacy/arsmagicalegacy/ritual/unlock_moonrise.json @@ -1,7 +1,7 @@ { "effect": { "type": "arsmagicalegacy:learn_skill", - "spell_part": "arsmagicalegacy:moonrise" + "skill": "arsmagicalegacy:moonrise" }, "requirements": [], "trigger": { diff --git a/src/main/generated/data/arsmagicalegacy/arsmagicalegacy/ritual/unlock_prosperity.json b/src/main/generated/data/arsmagicalegacy/arsmagicalegacy/ritual/unlock_prosperity.json index 19acf80cd..0fa465ca9 100644 --- a/src/main/generated/data/arsmagicalegacy/arsmagicalegacy/ritual/unlock_prosperity.json +++ b/src/main/generated/data/arsmagicalegacy/arsmagicalegacy/ritual/unlock_prosperity.json @@ -1,7 +1,7 @@ { "effect": { "type": "arsmagicalegacy:learn_skill", - "spell_part": "arsmagicalegacy:prosperity" + "skill": "arsmagicalegacy:prosperity" }, "requirements": [], "trigger": { diff --git a/src/main/generated/data/arsmagicalegacy/arsmagicalegacy/ritual/unlock_shield_overload.json b/src/main/generated/data/arsmagicalegacy/arsmagicalegacy/ritual/unlock_shield_overload.json new file mode 100644 index 000000000..59a3e2234 --- /dev/null +++ b/src/main/generated/data/arsmagicalegacy/arsmagicalegacy/ritual/unlock_shield_overload.json @@ -0,0 +1,15 @@ +{ + "effect": { + "type": "arsmagicalegacy:learn_skill", + "skill": "arsmagicalegacy:shield_overload" + }, + "requirements": [], + "trigger": { + "type": "arsmagicalegacy:spell_component_cast", + "components": [ + "arsmagicalegacy:shield", + "arsmagicalegacy:mana_drain" + ], + "modifiers": [] + } +} \ No newline at end of file diff --git a/src/main/generated/data/arsmagicalegacy/arsmagicalegacy/skill/affinity_gains_boost.json b/src/main/generated/data/arsmagicalegacy/arsmagicalegacy/skill/affinity_gains_boost.json new file mode 100644 index 000000000..956f26d71 --- /dev/null +++ b/src/main/generated/data/arsmagicalegacy/arsmagicalegacy/skill/affinity_gains_boost.json @@ -0,0 +1,12 @@ +{ + "cost": { + "arsmagicalegacy:blue": 1 + }, + "hidden": false, + "occulus_tab": "arsmagicalegacy:talent", + "parents": [ + "arsmagicalegacy:mana_regen_boost_1" + ], + "x": 120, + "y": 30 +} \ No newline at end of file diff --git a/src/main/generated/data/arsmagicalegacy/arsmagicalegacy/skill/augmented_casting.json b/src/main/generated/data/arsmagicalegacy/arsmagicalegacy/skill/augmented_casting.json new file mode 100644 index 000000000..282271fb1 --- /dev/null +++ b/src/main/generated/data/arsmagicalegacy/arsmagicalegacy/skill/augmented_casting.json @@ -0,0 +1,12 @@ +{ + "cost": { + "arsmagicalegacy:red": 1 + }, + "hidden": false, + "occulus_tab": "arsmagicalegacy:talent", + "parents": [ + "arsmagicalegacy:spell_motion" + ], + "x": 30, + "y": 120 +} \ No newline at end of file diff --git a/src/main/generated/data/arsmagicalegacy/arsmagicalegacy/skill/mana_regen_boost_1.json b/src/main/generated/data/arsmagicalegacy/arsmagicalegacy/skill/mana_regen_boost_1.json new file mode 100644 index 000000000..73c3f4893 --- /dev/null +++ b/src/main/generated/data/arsmagicalegacy/arsmagicalegacy/skill/mana_regen_boost_1.json @@ -0,0 +1,10 @@ +{ + "cost": { + "arsmagicalegacy:blue": 1 + }, + "hidden": false, + "occulus_tab": "arsmagicalegacy:talent", + "parents": [], + "x": 75, + "y": 30 +} \ No newline at end of file diff --git a/src/main/generated/data/arsmagicalegacy/arsmagicalegacy/skill/mana_regen_boost_2.json b/src/main/generated/data/arsmagicalegacy/arsmagicalegacy/skill/mana_regen_boost_2.json new file mode 100644 index 000000000..8c2e0b161 --- /dev/null +++ b/src/main/generated/data/arsmagicalegacy/arsmagicalegacy/skill/mana_regen_boost_2.json @@ -0,0 +1,12 @@ +{ + "cost": { + "arsmagicalegacy:green": 1 + }, + "hidden": false, + "occulus_tab": "arsmagicalegacy:talent", + "parents": [ + "arsmagicalegacy:mana_regen_boost_1" + ], + "x": 75, + "y": 75 +} \ No newline at end of file diff --git a/src/main/generated/data/arsmagicalegacy/arsmagicalegacy/skill/mana_regen_boost_3.json b/src/main/generated/data/arsmagicalegacy/arsmagicalegacy/skill/mana_regen_boost_3.json new file mode 100644 index 000000000..ebf9efee6 --- /dev/null +++ b/src/main/generated/data/arsmagicalegacy/arsmagicalegacy/skill/mana_regen_boost_3.json @@ -0,0 +1,12 @@ +{ + "cost": { + "arsmagicalegacy:red": 1 + }, + "hidden": false, + "occulus_tab": "arsmagicalegacy:talent", + "parents": [ + "arsmagicalegacy:mana_regen_boost_2" + ], + "x": 75, + "y": 120 +} \ No newline at end of file diff --git a/src/main/generated/data/arsmagicalegacy/arsmagicalegacy/skill/shield_overload.json b/src/main/generated/data/arsmagicalegacy/arsmagicalegacy/skill/shield_overload.json new file mode 100644 index 000000000..ed6f9eb3f --- /dev/null +++ b/src/main/generated/data/arsmagicalegacy/arsmagicalegacy/skill/shield_overload.json @@ -0,0 +1,8 @@ +{ + "cost": {}, + "hidden": true, + "occulus_tab": "arsmagicalegacy:talent", + "parents": [], + "x": 30, + "y": 30 +} \ No newline at end of file diff --git a/src/main/generated/data/arsmagicalegacy/arsmagicalegacy/skill/spell_motion.json b/src/main/generated/data/arsmagicalegacy/arsmagicalegacy/skill/spell_motion.json new file mode 100644 index 000000000..c95957f80 --- /dev/null +++ b/src/main/generated/data/arsmagicalegacy/arsmagicalegacy/skill/spell_motion.json @@ -0,0 +1,12 @@ +{ + "cost": { + "arsmagicalegacy:green": 1 + }, + "hidden": false, + "occulus_tab": "arsmagicalegacy:talent", + "parents": [ + "arsmagicalegacy:mana_regen_boost_2" + ], + "x": 30, + "y": 75 +} \ No newline at end of file diff --git a/src/main/java/com/github/minecraftschurlimods/arsmagicalegacy/common/handler/EventHandler.java b/src/main/java/com/github/minecraftschurlimods/arsmagicalegacy/common/handler/EventHandler.java index 5f035b408..df239a4ca 100644 --- a/src/main/java/com/github/minecraftschurlimods/arsmagicalegacy/common/handler/EventHandler.java +++ b/src/main/java/com/github/minecraftschurlimods/arsmagicalegacy/common/handler/EventHandler.java @@ -4,6 +4,7 @@ import com.github.minecraftschurlimods.arsmagicalegacy.Config; import com.github.minecraftschurlimods.arsmagicalegacy.api.ArsMagicaAPI; import com.github.minecraftschurlimods.arsmagicalegacy.api.affinity.Affinity; +import com.github.minecraftschurlimods.arsmagicalegacy.api.event.AffinityChangingEvent; import com.github.minecraftschurlimods.arsmagicalegacy.api.event.PlayerLevelUpEvent; import com.github.minecraftschurlimods.arsmagicalegacy.api.event.SpellEvent; import com.github.minecraftschurlimods.arsmagicalegacy.api.magic.ContingencyType; @@ -33,6 +34,7 @@ import com.github.minecraftschurlimods.arsmagicalegacy.common.init.AMMobEffects; import com.github.minecraftschurlimods.arsmagicalegacy.common.init.AMSkillPoints; import com.github.minecraftschurlimods.arsmagicalegacy.common.init.AMSounds; +import com.github.minecraftschurlimods.arsmagicalegacy.common.init.AMTalents; import com.github.minecraftschurlimods.arsmagicalegacy.common.init.AMWoodTypes; import com.github.minecraftschurlimods.arsmagicalegacy.common.item.SpellRecipeItem; import com.github.minecraftschurlimods.arsmagicalegacy.common.magic.BurnoutHelper; @@ -42,6 +44,7 @@ import com.github.minecraftschurlimods.arsmagicalegacy.common.magic.RiftHelper; import com.github.minecraftschurlimods.arsmagicalegacy.common.skill.SkillHelper; import com.github.minecraftschurlimods.arsmagicalegacy.common.spell.SpellDataManager; +import com.github.minecraftschurlimods.arsmagicalegacy.common.spell.SpellPartStats; import com.github.minecraftschurlimods.arsmagicalegacy.common.spell.TierMapping; import com.github.minecraftschurlimods.arsmagicalegacy.compat.CompatManager; import com.github.minecraftschurlimods.arsmagicalegacy.network.OpenSpellRecipeGuiInLecternPacket; @@ -70,6 +73,7 @@ import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.properties.WoodType; import net.minecraft.world.level.levelgen.Heightmap; +import net.minecraftforge.client.event.MovementInputUpdateEvent; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.common.brewing.BrewingRecipeRegistry; import net.minecraftforge.common.capabilities.RegisterCapabilitiesEvent; @@ -81,6 +85,7 @@ import net.minecraftforge.event.entity.EntityJoinLevelEvent; import net.minecraftforge.event.entity.SpawnPlacementRegisterEvent; import net.minecraftforge.event.entity.living.LivingDamageEvent; +import net.minecraftforge.event.entity.living.LivingHurtEvent; import net.minecraftforge.event.entity.player.PlayerEvent; import net.minecraftforge.event.entity.player.PlayerInteractEvent; import net.minecraftforge.eventbus.api.EventPriority; @@ -121,9 +126,13 @@ public static void register(IEventBus modBus) { forgeBus.addListener(EventHandler::playerClone); forgeBus.addListener(EventHandler::playerItemCrafted); forgeBus.addListener(EventHandler::playerRespawn); + forgeBus.addListener(EventHandler::livingHurt); forgeBus.addListener(EventHandler::livingDamage); forgeBus.addListener(EventHandler::rightClickBlock); + forgeBus.addListener(EventHandler::movementInputUpdate); + forgeBus.addListener(EventHandler::affinityChangingPre); forgeBus.addListener(EventPriority.HIGH, EventHandler::manaCostPre); + forgeBus.addListener(EventHandler::modifyStats); forgeBus.addListener(EventHandler::playerLevelUp); } @@ -261,6 +270,14 @@ private static void playerRespawn(PlayerEvent.PlayerRespawnEvent event) { } } + private static void livingHurt(LivingHurtEvent event) { + var api = ArsMagicaAPI.get(); + var helper = api.getManaHelper(); + if (event.getEntity() instanceof Player player && api.getSkillHelper().knows(player, AMTalents.SHIELD_OVERLOAD) && helper.getMana(player) == helper.getMaxMana(player)) { + event.setAmount(event.getAmount() * 0.95f); + } + } + private static void livingDamage(LivingDamageEvent event) { if (event.getEntity().getHealth() * 4 < event.getEntity().getMaxHealth()) { ArsMagicaAPI.get().getContingencyHelper().triggerContingency(event.getEntity(), ContingencyType.HEALTH); @@ -286,6 +303,20 @@ private static void rightClickBlock(PlayerInteractEvent.RightClickBlock event) { } } + private static void movementInputUpdate(MovementInputUpdateEvent event) { + Player player = event.getEntity(); + if (player.isUsingItem() && (player.getUseItem().is(AMItems.SPELL.get()) || player.getUseItem().is(AMItems.SPELL_BOOK.get())) && ArsMagicaAPI.get().getSkillHelper().knows(player, AMTalents.SPELL_MOTION)) { + event.getInput().forwardImpulse *= 5f; + event.getInput().leftImpulse *= 5f; + } + } + + private static void affinityChangingPre(AffinityChangingEvent.Pre event) { + if (ArsMagicaAPI.get().getSkillHelper().knows(event.getEntity(), AMTalents.AFFINITY_GAINS_BOOST)) { + event.shift *= 1.05; + } + } + private static void manaCostPre(SpellEvent.ManaCost.Pre event) { LivingEntity caster = event.getEntity(); if (!(caster instanceof Player player)) return; @@ -307,6 +338,16 @@ private static void manaCostPre(SpellEvent.ManaCost.Pre event) { event.setBase(cost); } + private static void modifyStats(SpellEvent.ModifyStats event) { + if (!(event.getEntity() instanceof Player player)) return; + if (!ArsMagicaAPI.get().getSkillHelper().knows(player, AMTalents.AUGMENTED_CASTING)) return; + if (!(event.stat instanceof SpellPartStats sps)) return; + switch (sps) { + case BOUNCE, DAMAGE, PIERCING, POWER -> event.modified += 1; + case DURATION, HEALING, RANGE, SPEED -> event.modified += event.base * 0.5f; + } + } + private static void playerLevelUp(PlayerLevelUpEvent event) { Player player = event.getEntity(); int level = event.getLevel(); diff --git a/src/main/java/com/github/minecraftschurlimods/arsmagicalegacy/common/handler/TickHandler.java b/src/main/java/com/github/minecraftschurlimods/arsmagicalegacy/common/handler/TickHandler.java index 47d1dc296..6b3b4dd77 100644 --- a/src/main/java/com/github/minecraftschurlimods/arsmagicalegacy/common/handler/TickHandler.java +++ b/src/main/java/com/github/minecraftschurlimods/arsmagicalegacy/common/handler/TickHandler.java @@ -7,6 +7,7 @@ import com.github.minecraftschurlimods.arsmagicalegacy.common.init.AMAbilities; import com.github.minecraftschurlimods.arsmagicalegacy.common.init.AMAttributes; import com.github.minecraftschurlimods.arsmagicalegacy.common.init.AMMobEffects; +import com.github.minecraftschurlimods.arsmagicalegacy.common.init.AMTalents; import com.github.minecraftschurlimods.arsmagicalegacy.common.magic.ManaHelper; import net.minecraft.world.damagesource.DamageSource; import net.minecraft.world.effect.MobEffectInstance; @@ -86,10 +87,20 @@ private static void playerTickClientEnd(final Player player) { private static void manaAndBurnoutRegen(final Player player) { var api = ArsMagicaAPI.get(); - if (player.isDeadOrDying() || !api.getMagicHelper().knowsMagic(player)) return; - if (!api.getMagicHelper().knowsMagic(player)) return; - api.getManaHelper().increaseMana(player, (float) player.getAttributeValue(AMAttributes.MANA_REGEN.get())); - api.getBurnoutHelper().decreaseBurnout(player, (float) player.getAttributeValue(AMAttributes.BURNOUT_REGEN.get())); + var magicHelper = api.getMagicHelper(); + var skillHelper = api.getSkillHelper(); + if (player.isDeadOrDying() || !magicHelper.knowsMagic(player)) return; + if (!magicHelper.knowsMagic(player)) return; + float factor = 1f; + if (skillHelper.knows(player, AMTalents.MANA_REGEN_BOOST_3)) { + factor = 1.15f; + } else if (skillHelper.knows(player, AMTalents.MANA_REGEN_BOOST_2)) { + factor = 1.1f; + } else if (skillHelper.knows(player, AMTalents.MANA_REGEN_BOOST_1)) { + factor = 1.05f; + } + api.getManaHelper().increaseMana(player, (float) player.getAttributeValue(AMAttributes.MANA_REGEN.get()) * factor); + api.getBurnoutHelper().decreaseBurnout(player, (float) player.getAttributeValue(AMAttributes.BURNOUT_REGEN.get()) * factor); } private static void handleAbilities(final Player player) { diff --git a/src/main/java/com/github/minecraftschurlimods/arsmagicalegacy/common/init/AMTalents.java b/src/main/java/com/github/minecraftschurlimods/arsmagicalegacy/common/init/AMTalents.java new file mode 100644 index 000000000..1a090f72b --- /dev/null +++ b/src/main/java/com/github/minecraftschurlimods/arsmagicalegacy/common/init/AMTalents.java @@ -0,0 +1,27 @@ +package com.github.minecraftschurlimods.arsmagicalegacy.common.init; + +import com.github.minecraftschurlimods.arsmagicalegacy.api.ArsMagicaAPI; +import net.minecraft.resources.ResourceLocation; + +import java.util.ArrayList; +import java.util.List; + +public interface AMTalents { + List ALL = new ArrayList<>(); + ResourceLocation AFFINITY_GAINS_BOOST = registerTalent("affinity_gains_boost"); + ResourceLocation AUGMENTED_CASTING = registerTalent("augmented_casting"); //TODO + /*ResourceLocation EXTRA_SUMMONS = registerTalent("extra_summons"); + ResourceLocation MAGE_BAND_1 = registerTalent("mage_band_1"); + ResourceLocation MAGE_BAND_2 = registerTalent("mage_band_2");*/ + ResourceLocation MANA_REGEN_BOOST_1 = registerTalent("mana_regen_boost_1"); + ResourceLocation MANA_REGEN_BOOST_2 = registerTalent("mana_regen_boost_2"); + ResourceLocation MANA_REGEN_BOOST_3 = registerTalent("mana_regen_boost_3"); + ResourceLocation SHIELD_OVERLOAD = registerTalent("shield_overload"); + ResourceLocation SPELL_MOTION = registerTalent("spell_motion"); + + private static ResourceLocation registerTalent(String name) { + ResourceLocation rl = new ResourceLocation(ArsMagicaAPI.MOD_ID, name); + ALL.add(rl); + return rl; + } +} diff --git a/src/main/java/com/github/minecraftschurlimods/arsmagicalegacy/common/ritual/effect/LearnSkillRitualEffect.java b/src/main/java/com/github/minecraftschurlimods/arsmagicalegacy/common/ritual/effect/LearnSkillRitualEffect.java index c8507eac0..db58d63bd 100644 --- a/src/main/java/com/github/minecraftschurlimods/arsmagicalegacy/common/ritual/effect/LearnSkillRitualEffect.java +++ b/src/main/java/com/github/minecraftschurlimods/arsmagicalegacy/common/ritual/effect/LearnSkillRitualEffect.java @@ -2,23 +2,29 @@ import com.github.minecraftschurlimods.arsmagicalegacy.api.ArsMagicaAPI; import com.github.minecraftschurlimods.arsmagicalegacy.api.ritual.RitualEffect; +import com.github.minecraftschurlimods.arsmagicalegacy.api.skill.Skill; import com.github.minecraftschurlimods.arsmagicalegacy.api.spell.ISpellPart; import com.github.minecraftschurlimods.arsmagicalegacy.common.init.AMRegistries; import com.github.minecraftschurlimods.codeclib.CodecHelper; import com.mojang.serialization.Codec; import com.mojang.serialization.codecs.RecordCodecBuilder; import net.minecraft.core.BlockPos; +import net.minecraft.resources.ResourceLocation; import net.minecraft.server.level.ServerLevel; import net.minecraft.world.entity.player.Player; -public record LearnSkillRitualEffect(ISpellPart part) implements RitualEffect { +public record LearnSkillRitualEffect(ResourceLocation id) implements RitualEffect { public static final Codec CODEC = RecordCodecBuilder.create(inst -> inst.group( - CodecHelper.forRegistry(AMRegistries.SPELL_PART_REGISTRY).fieldOf("spell_part").forGetter(LearnSkillRitualEffect::part) + ResourceLocation.CODEC.fieldOf("skill").forGetter(LearnSkillRitualEffect::id) ).apply(inst, LearnSkillRitualEffect::new)); + public LearnSkillRitualEffect(ISpellPart part) { + this(part.getId()); + } + @Override public boolean performEffect(Player player, ServerLevel level, BlockPos pos) { - ArsMagicaAPI.get().getSkillHelper().learn(player, part().getId()); + ArsMagicaAPI.get().getSkillHelper().learn(player, id); return true; } diff --git a/src/main/java/com/github/minecraftschurlimods/arsmagicalegacy/common/spell/SpellHelper.java b/src/main/java/com/github/minecraftschurlimods/arsmagicalegacy/common/spell/SpellHelper.java index 74a32afa7..3792245f6 100644 --- a/src/main/java/com/github/minecraftschurlimods/arsmagicalegacy/common/spell/SpellHelper.java +++ b/src/main/java/com/github/minecraftschurlimods/arsmagicalegacy/common/spell/SpellHelper.java @@ -169,7 +169,9 @@ public float getModifiedStat(float baseValue, ISpellPartStat stat, List