diff --git a/src/main/java/electroblob/wizardry/client/gui/GuiSpellDisplay.java b/src/main/java/electroblob/wizardry/client/gui/GuiSpellDisplay.java
index 96a7121e..93e25d45 100644
--- a/src/main/java/electroblob/wizardry/client/gui/GuiSpellDisplay.java
+++ b/src/main/java/electroblob/wizardry/client/gui/GuiSpellDisplay.java
@@ -44,7 +44,8 @@ import java.util.Map.Entry;
public class GuiSpellDisplay {
private static final ResourceLocation INDEX = new ResourceLocation(Wizardry.MODID, "textures/gui/spell_hud/_index.json");
-
+ private static final ResourceLocation CHARGE_METER = new ResourceLocation(Wizardry.MODID, "textures/gui/spell_charge_meter.png");
+
/** A map which stores all loaded HUD skin objects. This gets wiped on resource pack reload and repopulated with
* mappings as specified by {@code _index.json} (these stack between resource packs). The keys in the map correspond
* to the keys in {@code _index.json}, and are sorted in that order, with skins belonging to resource packs sorted
@@ -55,6 +56,11 @@ public class GuiSpellDisplay {
private static final Gson gson = new Gson();
private static final Random random = new Random();
+ /** Width of the charge meter. */
+ private static final int CHARGE_METER_WIDTH = 25;
+ /** Height of the charge meter. */
+ private static final int CHARGE_METER_HEIGHT = 9;
+
/** Width and height of the spell icon (very unlikely to change!) */
private static final int SPELL_ICON_SIZE = 32;
/** Number of ticks the spell switching animation plays for. */
@@ -99,12 +105,7 @@ public class GuiSpellDisplay {
@SubscribeEvent
public static void draw(RenderGameOverlayEvent.Post event){
- if(event.getType() != RenderGameOverlayEvent.ElementType.TEXT
- && event.getType() != RenderGameOverlayEvent.ElementType.HOTBAR) return;
-
- Minecraft mc = Minecraft.getMinecraft();
-
- EntityPlayer player = mc.player;
+ EntityPlayer player = Minecraft.getMinecraft().player;
if(player.isSpectator()) return; // Spectators shouldn't have the spell HUD!
@@ -117,12 +118,74 @@ public class GuiSpellDisplay {
wand = player.getHeldItemOffhand();
mainHand = false;
// If the player isn't holding a spellcasting item that shows the HUD, then nothing else needs to be done.
- if(!(wand.getItem() instanceof ISpellCastingItem && ((ISpellCastingItem)wand.getItem()).showSpellHUD(player, wand))) return;
+ if(!(wand.getItem() instanceof ISpellCastingItem && ((ISpellCastingItem)wand.getItem()).showSpellHUD(player, wand)))
+ return;
}
int width = event.getResolution().getScaledWidth();
int height = event.getResolution().getScaledHeight();
+ switch(event.getType()){
+ case CROSSHAIRS:
+ renderChargeMeter(player, wand, width, height, event.getPartialTicks());
+ break;
+ case HOTBAR:
+ renderSpellHUD(player, wand, mainHand, width, height, event.getPartialTicks(), false);
+ break;
+ case TEXT:
+ renderSpellHUD(player, wand, mainHand, width, height, event.getPartialTicks(), true);
+ break;
+ }
+
+ }
+
+ /**
+ * Renders the spell charge meter around the crosshairs.
+ * @param player A reference to the client player
+ * @param wand The wand the HUD is for
+ * @param width The width of the screen
+ * @param height The height of the screen
+ * @param partialTicks The current partial tick time
+ */
+ private static void renderChargeMeter(EntityPlayer player, ItemStack wand, int width, int height, float partialTicks){
+
+ if(Minecraft.getMinecraft().gameSettings.showDebugInfo) return; // Don't show charge meter in the debug screen
+ if(Minecraft.getMinecraft().gameSettings.thirdPersonView != 0) return; // Don't show in third person
+
+ Spell spell = WandHelper.getCurrentSpell(wand);
+
+ if(spell.getChargeup() <= 0) return;
+
+ // WHY WHY WHY are these methods named so misleadingly?! Sort yourselves out MCP!
+ // (getItemInUseCount returns the max count MINUS the use count, and getItemInUseMaxCount returns the use count)
+ if(player.getItemInUseMaxCount() == 0) return; // Not charging
+ float charge = (player.getItemInUseMaxCount() + partialTicks) / spell.getChargeup();
+ if(charge > 1) return; // Done charging
+
+ Minecraft.getMinecraft().renderEngine.bindTexture(CHARGE_METER);
+
+ int x1 = width/2 - CHARGE_METER_WIDTH/2;
+ int y = height/2 - CHARGE_METER_HEIGHT/2;
+ int w = (int)(CHARGE_METER_WIDTH/2 * charge);
+ int u = CHARGE_METER_WIDTH - w;
+
+ DrawingUtils.drawTexturedRect(x1, y, 0, 0, w, CHARGE_METER_HEIGHT, 32, 32);
+ DrawingUtils.drawTexturedRect(x1 + u, y, u, 0, w, CHARGE_METER_HEIGHT, 32, 32);
+
+ }
+
+ /**
+ * Renders the main spell HUD in the corner of the screen.
+ * @param player A reference to the client player
+ * @param wand The wand the HUD is for
+ * @param mainHand True if the wand is in the player's main hand, false if it is in their offhand
+ * @param width The width of the screen
+ * @param height The height of the screen
+ * @param partialTicks The current partial tick time
+ * @param textLayer True to render the text layer, false to render the background (hotbar layer)
+ */
+ private static void renderSpellHUD(EntityPlayer player, ItemStack wand, boolean mainHand, int width, int height, float partialTicks, boolean textLayer){
+
boolean flipX = Wizardry.settings.spellHUDPosition.flipX;
boolean flipY = Wizardry.settings.spellHUDPosition.flipY;
@@ -130,16 +193,16 @@ public class GuiSpellDisplay {
// ............. | This bit is true if the wand is on the left, false if it is on the right
flipX = flipX == ((mainHand ? player.getPrimaryHand() : player.getPrimaryHand().opposite()) == EnumHandSide.LEFT);
}
-
+
Skin skin = skins.get(Wizardry.settings.spellHUDSkin);
-
+
if(skin == null){
-
+
Wizardry.logger.info("The spell HUD skin '" + Wizardry.settings.spellHUDSkin + "' specified in the config"
+ " did not match any of the loaded skins; using the default skin as a fallback.");
-
+
skin = skins.get(Settings.DEFAULT_HUD_SKIN_KEY);
-
+
if(skin == null){
Wizardry.logger.warn("The default spell HUD skin is missing! A resource pack must have overridden it"
+ " with an invalid JSON file (default.json), please try again without any resource packs.");
@@ -148,7 +211,7 @@ public class GuiSpellDisplay {
}
GlStateManager.pushMatrix();
-
+
// 'Origin' of the spell hud (bottom left corner of the actual texture, always in the corner of the screen)
int x = flipX ? width : 0;
int y = flipY ? 0: height;
@@ -169,45 +232,46 @@ public class GuiSpellDisplay {
y = MathHelper.ceil(y/scale);
}
+ // TODO: Maybe convert this to use ISpellCastingItem
Spell spell = WandHelper.getCurrentSpell(wand);
int cooldown = WandHelper.getCurrentCooldown(wand);
int maxCooldown = WandHelper.getCurrentMaxCooldown(wand);
- if(event.getType() == RenderGameOverlayEvent.ElementType.TEXT){
-
+ if(textLayer){
+
float animationProgress = Math.signum(switchTimer) * ((SPELL_SWITCH_TIME - Math.abs(switchTimer) +
- event.getPartialTicks()) / SPELL_SWITCH_TIME);
-
+ partialTicks) / SPELL_SWITCH_TIME);
+
String prevSpellName = getFormattedSpellName(WandHelper.getPreviousSpell(wand), player, WandHelper.getPreviousCooldown(wand));
String spellName = getFormattedSpellName(spell, player, cooldown);
String nextSpellName = getFormattedSpellName(WandHelper.getNextSpell(wand), player, WandHelper.getNextCooldown(wand));
skin.drawText(x, y, flipX, flipY, prevSpellName, spellName, nextSpellName, animationProgress);
- }else if(event.getType() == RenderGameOverlayEvent.ElementType.HOTBAR){
+ }else{
boolean discovered = true;
if(!player.isCreative() && WizardData.get(player) != null){
discovered = WizardData.get(player).hasSpellBeenDiscovered(spell);
}
-
+
ResourceLocation icon = discovered ? spell.getIcon() : Spells.none.getIcon();
float progress = 1;
// Doesn't really matter what progress is when in creative, but we might as well avoid the calculation.
if(!player.isCreative() && !spell.isContinuous){
// Subtracted partial tick time to make it smoother
- progress = maxCooldown == 0 ? 1 : (maxCooldown - (float)cooldown + event.getPartialTicks()) / maxCooldown;
+ progress = maxCooldown == 0 ? 1 : (maxCooldown - (float)cooldown + partialTicks) / maxCooldown;
}
-
+
skin.drawBackground(x, y, flipX, flipY, icon, progress, player.isCreative(), player.isPotionActive(WizardryPotions.arcane_jammer));
-
+
}
GlStateManager.popMatrix();
}
-
+
/**
* Gets the name of the given spell, with formatting added according to its cooldown and whether the given player
* has discovered it.
diff --git a/src/main/java/electroblob/wizardry/event/SpellCastEvent.java b/src/main/java/electroblob/wizardry/event/SpellCastEvent.java
index ec471598..756cc77b 100644
--- a/src/main/java/electroblob/wizardry/event/SpellCastEvent.java
+++ b/src/main/java/electroblob/wizardry/event/SpellCastEvent.java
@@ -134,9 +134,9 @@ public abstract class SpellCastEvent extends Event {
/**
* SpellCastEvent.Pre is fired just before a spell is cast. Use this event to change the spell modifiers and
* generally alter the behaviour of the spell, or stop it from being cast entirely. For example, wizardry uses this
- * event to cancel spells cast by entities that have the arcane jammer effect. Note that for wands, this is called
- * before mana, tier and cooldowns are checked. Also note that this event is only fired once for continuous
- * spells, when they start casting.
+ * event to cancel spells cast by entities that have the arcane jammer effect. For wands, this is called
+ * before mana, tier and cooldowns are checked, and before charge-up. Also note that this event is only fired
+ * once for continuous spells, when they start casting.
*
* This event is {@link Cancelable}. If this event is canceled, the spell is not cast, mana is not consumed, and the
* right-click action that caused it (if any) returns a result of FAIL, meaning that the right-click is passed to
diff --git a/src/main/java/electroblob/wizardry/item/ISpellCastingItem.java b/src/main/java/electroblob/wizardry/item/ISpellCastingItem.java
index 2666a5bb..cc1e9884 100644
--- a/src/main/java/electroblob/wizardry/item/ISpellCastingItem.java
+++ b/src/main/java/electroblob/wizardry/item/ISpellCastingItem.java
@@ -117,7 +117,8 @@ public interface ISpellCastingItem {
/**
* Casts the given spell using the given item stack. This method does not perform any checks; these are done
* in {@link ISpellCastingItem#canCast(ItemStack, Spell, EntityPlayer, EnumHand, int, SpellModifiers)}. This method
- * also performs any post-casting logic, such as mana costs and cooldowns.
+ * also performs any post-casting logic, such as mana costs and cooldowns. This method does not handle charge-up
+ * times.
*
* N.B. Continuous spell casting from outside of the items requires a bit of extra legwork, see
* {@link WizardData} for an example.
diff --git a/src/main/java/electroblob/wizardry/item/ItemWand.java b/src/main/java/electroblob/wizardry/item/ItemWand.java
index e6820105..efff9c4b 100644
--- a/src/main/java/electroblob/wizardry/item/ItemWand.java
+++ b/src/main/java/electroblob/wizardry/item/ItemWand.java
@@ -355,18 +355,19 @@ public class ItemWand extends Item implements IWorkbenchItem, ISpellCastingItem,
SpellModifiers modifiers = this.calculateModifiers(stack, player, spell);
if(canCast(stack, spell, player, hand, 0, modifiers)){
- // Now we can cast continuous spells with scrolls!
- if(spell.isContinuous){
+
+ if(spell.isContinuous || spell.getChargeup() > 0){
+ // Spells that need the mouse to be held (continuous, charge-up or both)
if(!player.isHandActive()){
player.setActiveHand(hand);
- // Store the modifiers for use each tick
+ // Store the modifiers for use later
if(WizardData.get(player) != null) WizardData.get(player).itemCastingModifiers = modifiers;
- // Return the player's held item so spells can change it if they wish (e.g. possession)
- return new ActionResult<>(EnumActionResult.SUCCESS, player.getHeldItem(hand));
+ return new ActionResult<>(EnumActionResult.SUCCESS, stack);
}
}else{
+ // All other (instant) spells
if(cast(stack, spell, player, hand, 0, modifiers)){
- return new ActionResult<>(EnumActionResult.SUCCESS, player.getHeldItem(hand));
+ return new ActionResult<>(EnumActionResult.SUCCESS, stack);
}
}
}
@@ -374,7 +375,8 @@ public class ItemWand extends Item implements IWorkbenchItem, ISpellCastingItem,
return new ActionResult<>(EnumActionResult.FAIL, stack);
}
- // For continuous spells. The count argument actually decrements by 1 each tick.
+ // For continuous spells and spells with a charge-up time. The count argument actually decrements by 1 each tick.
+ // N.B. The first time this gets called is the tick AFTER onItemRightClick is called, not the same tick
@Override
public void onUsingTick(ItemStack stack, EntityLivingBase user, int count){
@@ -384,8 +386,6 @@ public class ItemWand extends Item implements IWorkbenchItem, ISpellCastingItem,
Spell spell = WandHelper.getCurrentSpell(stack);
- if(!spell.isContinuous) return;
-
SpellModifiers modifiers;
if(WizardData.get(player) != null){
@@ -394,15 +394,29 @@ public class ItemWand extends Item implements IWorkbenchItem, ISpellCastingItem,
modifiers = this.calculateModifiers(stack, (EntityPlayer)user, spell); // Fallback to the old way, should never be used
}
- int castingTick = stack.getMaxItemUseDuration() - count;
+ int useTick = stack.getMaxItemUseDuration() - count;
- // Continuous spells (these must check if they can be cast each tick since the mana changes)
- // Don't call canCast when castingTick == 0 because we already did it in onItemRightClick
- if(castingTick == 0 || canCast(stack, spell, player, player.getActiveHand(), castingTick, modifiers)){
- cast(stack, spell, player, player.getActiveHand(), castingTick, modifiers);
+ if(spell.isContinuous){
+ // Continuous spell charge-up is simple, just don't do anything until it's charged
+ if(useTick >= spell.getChargeup()){
+ // castingTick needs to be relative to when the spell actually started
+ int castingTick = useTick - spell.getChargeup();
+ // Continuous spells (these must check if they can be cast each tick since the mana changes)
+ // Don't call canCast when castingTick == 0 because we already did it in onItemRightClick - even
+ // with charge-up times, because we don't want to trigger events twice
+ if(castingTick == 0 || canCast(stack, spell, player, player.getActiveHand(), castingTick, modifiers)){
+ cast(stack, spell, player, player.getActiveHand(), castingTick, modifiers);
+ }else{
+ // Stops the casting if it was interrupted, either by events or because the wand ran out of mana
+ player.stopActiveHand();
+ }
+ }
}else{
- // Stops the casting if it was interrupted, either by events or because the wand ran out of mana
- player.stopActiveHand();
+ // Non-continuous spells need to check they actually have a charge-up since ALL spells call setActiveHand
+ if(spell.getChargeup() > 0 && useTick == spell.getChargeup()){
+ // Once the spell is charged, it's exactly the same as in onItemRightClick
+ cast(stack, spell, player, player.getActiveHand(), 0, modifiers);
+ }
}
}
}
@@ -450,8 +464,6 @@ public class ItemWand extends Item implements IWorkbenchItem, ISpellCastingItem,
WizardryPacketHandler.net.sendToDimension(msg, world.provider.getDimension());
}
- caster.setActiveHand(hand);
-
// Mana cost
int cost = (int)(spell.getCost() * modifiers.get(SpellModifiers.COST) + 0.1f); // Weird floaty rounding
// As of wizardry 4.2 mana cost is only divided over two intervals each second
@@ -461,6 +473,8 @@ public class ItemWand extends Item implements IWorkbenchItem, ISpellCastingItem,
}
+ caster.setActiveHand(hand);
+
// Cooldown
if(!spell.isContinuous && !caster.isCreative()){ // Spells only have a cooldown in survival
WandHelper.setCurrentCooldown(stack, (int)(spell.getCooldown() * modifiers.get(WizardryItems.cooldown_upgrade)));
diff --git a/src/main/resources/assets/ebwizardry/spells/arcane_jammer.json b/src/main/resources/assets/ebwizardry/spells/arcane_jammer.json
index 0192d840..336ca013 100644
--- a/src/main/resources/assets/ebwizardry/spells/arcane_jammer.json
+++ b/src/main/resources/assets/ebwizardry/spells/arcane_jammer.json
@@ -14,7 +14,7 @@
"element": "healing",
"type": "alteration",
"cost": 30,
- "chargeup": 0,
+ "chargeup": 5,
"cooldown": 50,
"base_properties": {
"range": 10,
diff --git a/src/main/resources/assets/ebwizardry/spells/arrow_rain.json b/src/main/resources/assets/ebwizardry/spells/arrow_rain.json
index e0c5602b..f3d3a3d9 100644
--- a/src/main/resources/assets/ebwizardry/spells/arrow_rain.json
+++ b/src/main/resources/assets/ebwizardry/spells/arrow_rain.json
@@ -14,7 +14,7 @@
"element": "sorcery",
"type": "attack",
"cost": 75,
- "chargeup": 0,
+ "chargeup": 20,
"cooldown": 300,
"base_properties": {
"range": 20,
diff --git a/src/main/resources/assets/ebwizardry/spells/black_hole.json b/src/main/resources/assets/ebwizardry/spells/black_hole.json
index 290ad352..22ddd6ca 100644
--- a/src/main/resources/assets/ebwizardry/spells/black_hole.json
+++ b/src/main/resources/assets/ebwizardry/spells/black_hole.json
@@ -14,7 +14,7 @@
"element": "sorcery",
"type": "construct",
"cost": 150,
- "chargeup": 0,
+ "chargeup": 25,
"cooldown": 400,
"base_properties": {
"duration": 400,
diff --git a/src/main/resources/assets/ebwizardry/spells/blizzard.json b/src/main/resources/assets/ebwizardry/spells/blizzard.json
index cda68e4c..b467d1c2 100644
--- a/src/main/resources/assets/ebwizardry/spells/blizzard.json
+++ b/src/main/resources/assets/ebwizardry/spells/blizzard.json
@@ -14,7 +14,7 @@
"element": "ice",
"type": "construct",
"cost": 40,
- "chargeup": 0,
+ "chargeup": 10,
"cooldown": 100,
"base_properties": {
"duration": 600,
diff --git a/src/main/resources/assets/ebwizardry/spells/chain_lightning.json b/src/main/resources/assets/ebwizardry/spells/chain_lightning.json
index 0f7fcc3c..3eec3ace 100644
--- a/src/main/resources/assets/ebwizardry/spells/chain_lightning.json
+++ b/src/main/resources/assets/ebwizardry/spells/chain_lightning.json
@@ -14,7 +14,7 @@
"element": "lightning",
"type": "attack",
"cost": 25,
- "chargeup": 0,
+ "chargeup": 5,
"cooldown": 50,
"base_properties": {
"primary_damage": 10,
diff --git a/src/main/resources/assets/ebwizardry/spells/clairvoyance.json b/src/main/resources/assets/ebwizardry/spells/clairvoyance.json
index e8b43887..3ec742cc 100644
--- a/src/main/resources/assets/ebwizardry/spells/clairvoyance.json
+++ b/src/main/resources/assets/ebwizardry/spells/clairvoyance.json
@@ -14,7 +14,7 @@
"element": "sorcery",
"type": "utility",
"cost": 20,
- "chargeup": 0,
+ "chargeup": 10,
"cooldown": 100,
"base_properties": {
"range": 256,
diff --git a/src/main/resources/assets/ebwizardry/spells/conjure_armour.json b/src/main/resources/assets/ebwizardry/spells/conjure_armour.json
index 7c688fc6..078b543b 100644
--- a/src/main/resources/assets/ebwizardry/spells/conjure_armour.json
+++ b/src/main/resources/assets/ebwizardry/spells/conjure_armour.json
@@ -14,7 +14,7 @@
"element": "sorcery",
"type": "defence",
"cost": 45,
- "chargeup": 0,
+ "chargeup": 10,
"cooldown": 50,
"base_properties": {
"item_lifetime": 1800
diff --git a/src/main/resources/assets/ebwizardry/spells/containment.json b/src/main/resources/assets/ebwizardry/spells/containment.json
index 4c5d86c5..0626f068 100644
--- a/src/main/resources/assets/ebwizardry/spells/containment.json
+++ b/src/main/resources/assets/ebwizardry/spells/containment.json
@@ -14,7 +14,7 @@
"element": "sorcery",
"type": "alteration",
"cost": 40,
- "chargeup": 0,
+ "chargeup": 5,
"cooldown": 60,
"base_properties": {
"range": 10,
diff --git a/src/main/resources/assets/ebwizardry/spells/cure_effects.json b/src/main/resources/assets/ebwizardry/spells/cure_effects.json
index 5d9c7b3e..8121a2df 100644
--- a/src/main/resources/assets/ebwizardry/spells/cure_effects.json
+++ b/src/main/resources/assets/ebwizardry/spells/cure_effects.json
@@ -14,7 +14,7 @@
"element": "healing",
"type": "defence",
"cost": 25,
- "chargeup": 0,
+ "chargeup": 10,
"cooldown": 40,
"base_properties": {}
}
\ No newline at end of file
diff --git a/src/main/resources/assets/ebwizardry/spells/curse_of_enfeeblement.json b/src/main/resources/assets/ebwizardry/spells/curse_of_enfeeblement.json
index 8fbb4684..0f39a656 100644
--- a/src/main/resources/assets/ebwizardry/spells/curse_of_enfeeblement.json
+++ b/src/main/resources/assets/ebwizardry/spells/curse_of_enfeeblement.json
@@ -14,7 +14,7 @@
"element": "necromancy",
"type": "alteration",
"cost": 60,
- "chargeup": 0,
+ "chargeup": 20,
"cooldown": 150,
"base_properties": {
"range": 10,
diff --git a/src/main/resources/assets/ebwizardry/spells/curse_of_soulbinding.json b/src/main/resources/assets/ebwizardry/spells/curse_of_soulbinding.json
index 12adc02a..bfac23df 100644
--- a/src/main/resources/assets/ebwizardry/spells/curse_of_soulbinding.json
+++ b/src/main/resources/assets/ebwizardry/spells/curse_of_soulbinding.json
@@ -14,7 +14,7 @@
"element": "necromancy",
"type": "alteration",
"cost": 35,
- "chargeup": 0,
+ "chargeup": 10,
"cooldown": 100,
"base_properties": {
"range": 10
diff --git a/src/main/resources/assets/ebwizardry/spells/curse_of_undeath.json b/src/main/resources/assets/ebwizardry/spells/curse_of_undeath.json
index f77ecc30..5e490e3f 100644
--- a/src/main/resources/assets/ebwizardry/spells/curse_of_undeath.json
+++ b/src/main/resources/assets/ebwizardry/spells/curse_of_undeath.json
@@ -14,7 +14,7 @@
"element": "necromancy",
"type": "alteration",
"cost": 40,
- "chargeup": 0,
+ "chargeup": 10,
"cooldown": 100,
"base_properties": {
"range": 10,
diff --git a/src/main/resources/assets/ebwizardry/spells/decay.json b/src/main/resources/assets/ebwizardry/spells/decay.json
index 1c3673ef..b2ca5024 100644
--- a/src/main/resources/assets/ebwizardry/spells/decay.json
+++ b/src/main/resources/assets/ebwizardry/spells/decay.json
@@ -14,7 +14,7 @@
"element": "necromancy",
"type": "attack",
"cost": 50,
- "chargeup": 0,
+ "chargeup": 10,
"cooldown": 200,
"base_properties": {
"range": 12,
diff --git a/src/main/resources/assets/ebwizardry/spells/decoy.json b/src/main/resources/assets/ebwizardry/spells/decoy.json
index 6d684c52..0a53ef69 100644
--- a/src/main/resources/assets/ebwizardry/spells/decoy.json
+++ b/src/main/resources/assets/ebwizardry/spells/decoy.json
@@ -14,7 +14,7 @@
"element": "sorcery",
"type": "utility",
"cost": 40,
- "chargeup": 0,
+ "chargeup": 10,
"cooldown": 200,
"base_properties": {
"decoy_lifetime": 600,
diff --git a/src/main/resources/assets/ebwizardry/spells/diamondflesh.json b/src/main/resources/assets/ebwizardry/spells/diamondflesh.json
index 9a969105..2867ca12 100644
--- a/src/main/resources/assets/ebwizardry/spells/diamondflesh.json
+++ b/src/main/resources/assets/ebwizardry/spells/diamondflesh.json
@@ -14,7 +14,7 @@
"element": "healing",
"type": "defence",
"cost": 100,
- "chargeup": 0,
+ "chargeup": 25,
"cooldown": 300,
"base_properties": {
"resistance_duration": 600,
diff --git a/src/main/resources/assets/ebwizardry/spells/earthquake.json b/src/main/resources/assets/ebwizardry/spells/earthquake.json
index 18401a07..90616d27 100644
--- a/src/main/resources/assets/ebwizardry/spells/earthquake.json
+++ b/src/main/resources/assets/ebwizardry/spells/earthquake.json
@@ -14,7 +14,7 @@
"element": "earth",
"type": "attack",
"cost": 75,
- "chargeup": 0,
+ "chargeup": 25,
"cooldown": 250,
"base_properties": {
"effect_radius": 8,
diff --git a/src/main/resources/assets/ebwizardry/spells/entrapment.json b/src/main/resources/assets/ebwizardry/spells/entrapment.json
index c6dc3d24..2e973aa7 100644
--- a/src/main/resources/assets/ebwizardry/spells/entrapment.json
+++ b/src/main/resources/assets/ebwizardry/spells/entrapment.json
@@ -14,7 +14,7 @@
"element": "necromancy",
"type": "attack",
"cost": 35,
- "chargeup": 0,
+ "chargeup": 10,
"cooldown": 75,
"base_properties": {
"range": 10,
diff --git a/src/main/resources/assets/ebwizardry/spells/fire_breath.json b/src/main/resources/assets/ebwizardry/spells/fire_breath.json
index aaf9401b..b89837e5 100644
--- a/src/main/resources/assets/ebwizardry/spells/fire_breath.json
+++ b/src/main/resources/assets/ebwizardry/spells/fire_breath.json
@@ -14,7 +14,7 @@
"element": "fire",
"type": "attack",
"cost": 15,
- "chargeup": 0,
+ "chargeup": 15,
"cooldown": 0,
"base_properties": {
"range": 10,
diff --git a/src/main/resources/assets/ebwizardry/spells/fire_resistance.json b/src/main/resources/assets/ebwizardry/spells/fire_resistance.json
index e143b964..2ac239a6 100644
--- a/src/main/resources/assets/ebwizardry/spells/fire_resistance.json
+++ b/src/main/resources/assets/ebwizardry/spells/fire_resistance.json
@@ -14,7 +14,7 @@
"element": "fire",
"type": "defence",
"cost": 20,
- "chargeup": 0,
+ "chargeup": 15,
"cooldown": 80,
"base_properties": {
"fire_resistance_duration": 600,
diff --git a/src/main/resources/assets/ebwizardry/spells/flaming_axe.json b/src/main/resources/assets/ebwizardry/spells/flaming_axe.json
index cbfab3ec..3014de16 100644
--- a/src/main/resources/assets/ebwizardry/spells/flaming_axe.json
+++ b/src/main/resources/assets/ebwizardry/spells/flaming_axe.json
@@ -14,7 +14,7 @@
"element": "fire",
"type": "utility",
"cost": 45,
- "chargeup": 0,
+ "chargeup": 10,
"cooldown": 50,
"base_properties": {
"item_lifetime": 1200,
diff --git a/src/main/resources/assets/ebwizardry/spells/font_of_mana.json b/src/main/resources/assets/ebwizardry/spells/font_of_mana.json
index c4bac0d8..66da2de7 100644
--- a/src/main/resources/assets/ebwizardry/spells/font_of_mana.json
+++ b/src/main/resources/assets/ebwizardry/spells/font_of_mana.json
@@ -14,7 +14,7 @@
"element": "healing",
"type": "utility",
"cost": 100,
- "chargeup": 0,
+ "chargeup": 15,
"cooldown": 250,
"base_properties": {
"effect_radius": 5,
diff --git a/src/main/resources/assets/ebwizardry/spells/font_of_vitality.json b/src/main/resources/assets/ebwizardry/spells/font_of_vitality.json
index f858b6ed..4d486150 100644
--- a/src/main/resources/assets/ebwizardry/spells/font_of_vitality.json
+++ b/src/main/resources/assets/ebwizardry/spells/font_of_vitality.json
@@ -14,7 +14,7 @@
"element": "healing",
"type": "defence",
"cost": 75,
- "chargeup": 0,
+ "chargeup": 20,
"cooldown": 300,
"base_properties": {
"absorption_duration": 1200,
diff --git a/src/main/resources/assets/ebwizardry/spells/forcefield.json b/src/main/resources/assets/ebwizardry/spells/forcefield.json
index bb6cbf3a..9e34fe86 100644
--- a/src/main/resources/assets/ebwizardry/spells/forcefield.json
+++ b/src/main/resources/assets/ebwizardry/spells/forcefield.json
@@ -14,7 +14,7 @@
"element": "healing",
"type": "defence",
"cost": 45,
- "chargeup": 0,
+ "chargeup": 15,
"cooldown": 200,
"base_properties": {
"duration": 600,
diff --git a/src/main/resources/assets/ebwizardry/spells/forest_of_thorns.json b/src/main/resources/assets/ebwizardry/spells/forest_of_thorns.json
index 4d5e2414..a8d44cad 100644
--- a/src/main/resources/assets/ebwizardry/spells/forest_of_thorns.json
+++ b/src/main/resources/assets/ebwizardry/spells/forest_of_thorns.json
@@ -14,7 +14,7 @@
"element": "earth",
"type": "construct",
"cost": 100,
- "chargeup": 0,
+ "chargeup": 20,
"cooldown": 250,
"base_properties": {
"effect_radius": 3,
diff --git a/src/main/resources/assets/ebwizardry/spells/forests_curse.json b/src/main/resources/assets/ebwizardry/spells/forests_curse.json
index 1e12f461..fb84dc46 100644
--- a/src/main/resources/assets/ebwizardry/spells/forests_curse.json
+++ b/src/main/resources/assets/ebwizardry/spells/forests_curse.json
@@ -14,7 +14,7 @@
"element": "earth",
"type": "attack",
"cost": 75,
- "chargeup": 0,
+ "chargeup": 15,
"cooldown": 200,
"base_properties": {
"effect_radius": 5,
diff --git a/src/main/resources/assets/ebwizardry/spells/frost_axe.json b/src/main/resources/assets/ebwizardry/spells/frost_axe.json
index e0d8912f..594de077 100644
--- a/src/main/resources/assets/ebwizardry/spells/frost_axe.json
+++ b/src/main/resources/assets/ebwizardry/spells/frost_axe.json
@@ -14,7 +14,7 @@
"element": "ice",
"type": "utility",
"cost": 45,
- "chargeup": 0,
+ "chargeup": 10,
"cooldown": 50,
"base_properties": {
"item_lifetime": 1200,
diff --git a/src/main/resources/assets/ebwizardry/spells/greater_fireball.json b/src/main/resources/assets/ebwizardry/spells/greater_fireball.json
index d94fc93c..8c2f6c44 100644
--- a/src/main/resources/assets/ebwizardry/spells/greater_fireball.json
+++ b/src/main/resources/assets/ebwizardry/spells/greater_fireball.json
@@ -14,7 +14,7 @@
"element": "fire",
"type": "projectile",
"cost": 20,
- "chargeup": 0,
+ "chargeup": 5,
"cooldown": 30,
"base_properties": {
"range": 20,
diff --git a/src/main/resources/assets/ebwizardry/spells/greater_heal.json b/src/main/resources/assets/ebwizardry/spells/greater_heal.json
index 5797115c..614285a5 100644
--- a/src/main/resources/assets/ebwizardry/spells/greater_heal.json
+++ b/src/main/resources/assets/ebwizardry/spells/greater_heal.json
@@ -14,7 +14,7 @@
"element": "healing",
"type": "defence",
"cost": 15,
- "chargeup": 0,
+ "chargeup": 10,
"cooldown": 40,
"base_properties": {
"health": 8
diff --git a/src/main/resources/assets/ebwizardry/spells/greater_ward.json b/src/main/resources/assets/ebwizardry/spells/greater_ward.json
index 9fde216e..e3aecb09 100644
--- a/src/main/resources/assets/ebwizardry/spells/greater_ward.json
+++ b/src/main/resources/assets/ebwizardry/spells/greater_ward.json
@@ -14,7 +14,7 @@
"element": "healing",
"type": "buff",
"cost": 20,
- "chargeup": 0,
+ "chargeup": 10,
"cooldown": 65,
"base_properties": {
"ward_duration": 600,
diff --git a/src/main/resources/assets/ebwizardry/spells/group_heal.json b/src/main/resources/assets/ebwizardry/spells/group_heal.json
index c1449e69..5ecaa49b 100644
--- a/src/main/resources/assets/ebwizardry/spells/group_heal.json
+++ b/src/main/resources/assets/ebwizardry/spells/group_heal.json
@@ -14,7 +14,7 @@
"element": "healing",
"type": "defence",
"cost": 35,
- "chargeup": 0,
+ "chargeup": 10,
"cooldown": 150,
"base_properties": {
"effect_radius": 5,
diff --git a/src/main/resources/assets/ebwizardry/spells/hailstorm.json b/src/main/resources/assets/ebwizardry/spells/hailstorm.json
index b7dd6e29..0d99a628 100644
--- a/src/main/resources/assets/ebwizardry/spells/hailstorm.json
+++ b/src/main/resources/assets/ebwizardry/spells/hailstorm.json
@@ -14,7 +14,7 @@
"element": "ice",
"type": "attack",
"cost": 75,
- "chargeup": 0,
+ "chargeup": 20,
"cooldown": 300,
"base_properties": {
"range": 20,
diff --git a/src/main/resources/assets/ebwizardry/spells/healing_aura.json b/src/main/resources/assets/ebwizardry/spells/healing_aura.json
index 18d81c27..44e855bf 100644
--- a/src/main/resources/assets/ebwizardry/spells/healing_aura.json
+++ b/src/main/resources/assets/ebwizardry/spells/healing_aura.json
@@ -14,7 +14,7 @@
"element": "healing",
"type": "construct",
"cost": 35,
- "chargeup": 0,
+ "chargeup": 15,
"cooldown": 150,
"base_properties": {
"duration": 600,
diff --git a/src/main/resources/assets/ebwizardry/spells/ice_age.json b/src/main/resources/assets/ebwizardry/spells/ice_age.json
index f7befce5..1dcdc711 100644
--- a/src/main/resources/assets/ebwizardry/spells/ice_age.json
+++ b/src/main/resources/assets/ebwizardry/spells/ice_age.json
@@ -14,7 +14,7 @@
"element": "ice",
"type": "attack",
"cost": 70,
- "chargeup": 0,
+ "chargeup": 20,
"cooldown": 250,
"base_properties": {
"effect_radius": 7,
diff --git a/src/main/resources/assets/ebwizardry/spells/ice_lance.json b/src/main/resources/assets/ebwizardry/spells/ice_lance.json
index a259d9b1..1e99c6e7 100644
--- a/src/main/resources/assets/ebwizardry/spells/ice_lance.json
+++ b/src/main/resources/assets/ebwizardry/spells/ice_lance.json
@@ -14,7 +14,7 @@
"element": "ice",
"type": "projectile",
"cost": 20,
- "chargeup": 0,
+ "chargeup": 5,
"cooldown": 20,
"base_properties": {
"range": 15,
diff --git a/src/main/resources/assets/ebwizardry/spells/invisibility.json b/src/main/resources/assets/ebwizardry/spells/invisibility.json
index 04fe24b1..18a95b75 100644
--- a/src/main/resources/assets/ebwizardry/spells/invisibility.json
+++ b/src/main/resources/assets/ebwizardry/spells/invisibility.json
@@ -14,7 +14,7 @@
"element": "sorcery",
"type": "buff",
"cost": 35,
- "chargeup": 0,
+ "chargeup": 15,
"cooldown": 200,
"base_properties": {
"invisibility_duration": 600,
diff --git a/src/main/resources/assets/ebwizardry/spells/invoke_weather.json b/src/main/resources/assets/ebwizardry/spells/invoke_weather.json
index 9c4ba918..2064207e 100644
--- a/src/main/resources/assets/ebwizardry/spells/invoke_weather.json
+++ b/src/main/resources/assets/ebwizardry/spells/invoke_weather.json
@@ -14,7 +14,7 @@
"element": "lightning",
"type": "utility",
"cost": 30,
- "chargeup": 0,
+ "chargeup": 15,
"cooldown": 100,
"base_properties": {
"thunderstorm_chance": 0.2
diff --git a/src/main/resources/assets/ebwizardry/spells/ironflesh.json b/src/main/resources/assets/ebwizardry/spells/ironflesh.json
index 31a017a7..089f63bd 100644
--- a/src/main/resources/assets/ebwizardry/spells/ironflesh.json
+++ b/src/main/resources/assets/ebwizardry/spells/ironflesh.json
@@ -14,7 +14,7 @@
"element": "healing",
"type": "defence",
"cost": 30,
- "chargeup": 0,
+ "chargeup": 15,
"cooldown": 100,
"base_properties": {
"resistance_duration": 600,
diff --git a/src/main/resources/assets/ebwizardry/spells/lightning_bolt.json b/src/main/resources/assets/ebwizardry/spells/lightning_bolt.json
index 9be2d4a5..716e6bd9 100644
--- a/src/main/resources/assets/ebwizardry/spells/lightning_bolt.json
+++ b/src/main/resources/assets/ebwizardry/spells/lightning_bolt.json
@@ -14,7 +14,7 @@
"element": "lightning",
"type": "attack",
"cost": 40,
- "chargeup": 0,
+ "chargeup": 10,
"cooldown": 80,
"base_properties": {
"range": 80
diff --git a/src/main/resources/assets/ebwizardry/spells/lightning_disc.json b/src/main/resources/assets/ebwizardry/spells/lightning_disc.json
index fd2f9ff9..6d9f49f7 100644
--- a/src/main/resources/assets/ebwizardry/spells/lightning_disc.json
+++ b/src/main/resources/assets/ebwizardry/spells/lightning_disc.json
@@ -14,7 +14,7 @@
"element": "lightning",
"type": "projectile",
"cost": 25,
- "chargeup": 0,
+ "chargeup": 5,
"cooldown": 60,
"base_properties": {
"range": 30,
diff --git a/src/main/resources/assets/ebwizardry/spells/lightning_hammer.json b/src/main/resources/assets/ebwizardry/spells/lightning_hammer.json
index 3d93cbb4..3ebeb686 100644
--- a/src/main/resources/assets/ebwizardry/spells/lightning_hammer.json
+++ b/src/main/resources/assets/ebwizardry/spells/lightning_hammer.json
@@ -14,7 +14,7 @@
"element": "lightning",
"type": "attack",
"cost": 100,
- "chargeup": 0,
+ "chargeup": 25,
"cooldown": 300,
"base_properties": {
"range": 40,
diff --git a/src/main/resources/assets/ebwizardry/spells/lightning_web.json b/src/main/resources/assets/ebwizardry/spells/lightning_web.json
index cc16ee60..27929704 100644
--- a/src/main/resources/assets/ebwizardry/spells/lightning_web.json
+++ b/src/main/resources/assets/ebwizardry/spells/lightning_web.json
@@ -14,7 +14,7 @@
"element": "lightning",
"type": "attack",
"cost": 15,
- "chargeup": 0,
+ "chargeup": 15,
"cooldown": 0,
"base_properties": {
"primary_damage": 5,
diff --git a/src/main/resources/assets/ebwizardry/spells/meteor.json b/src/main/resources/assets/ebwizardry/spells/meteor.json
index d56985aa..aa27a909 100644
--- a/src/main/resources/assets/ebwizardry/spells/meteor.json
+++ b/src/main/resources/assets/ebwizardry/spells/meteor.json
@@ -14,7 +14,7 @@
"element": "fire",
"type": "attack",
"cost": 100,
- "chargeup": 0,
+ "chargeup": 20,
"cooldown": 200,
"base_properties": {
"range": 40,
diff --git a/src/main/resources/assets/ebwizardry/spells/mind_control.json b/src/main/resources/assets/ebwizardry/spells/mind_control.json
index e019a77f..bb3402c8 100644
--- a/src/main/resources/assets/ebwizardry/spells/mind_control.json
+++ b/src/main/resources/assets/ebwizardry/spells/mind_control.json
@@ -14,7 +14,7 @@
"element": "necromancy",
"type": "attack",
"cost": 40,
- "chargeup": 0,
+ "chargeup": 10,
"cooldown": 150,
"base_properties": {
"range": 8,
diff --git a/src/main/resources/assets/ebwizardry/spells/paralysis.json b/src/main/resources/assets/ebwizardry/spells/paralysis.json
index 8691b64b..226df1e6 100644
--- a/src/main/resources/assets/ebwizardry/spells/paralysis.json
+++ b/src/main/resources/assets/ebwizardry/spells/paralysis.json
@@ -14,7 +14,7 @@
"element": "lightning",
"type": "alteration",
"cost": 20,
- "chargeup": 0,
+ "chargeup": 10,
"cooldown": 60,
"base_properties": {
"range": 10,
diff --git a/src/main/resources/assets/ebwizardry/spells/petrify.json b/src/main/resources/assets/ebwizardry/spells/petrify.json
index 9add942a..53ff72d4 100644
--- a/src/main/resources/assets/ebwizardry/spells/petrify.json
+++ b/src/main/resources/assets/ebwizardry/spells/petrify.json
@@ -14,7 +14,7 @@
"element": "sorcery",
"type": "attack",
"cost": 40,
- "chargeup": 0,
+ "chargeup": 20,
"cooldown": 100,
"base_properties": {
"range": 10,
diff --git a/src/main/resources/assets/ebwizardry/spells/plague_of_darkness.json b/src/main/resources/assets/ebwizardry/spells/plague_of_darkness.json
index 3da3cc81..d3d4d1ff 100644
--- a/src/main/resources/assets/ebwizardry/spells/plague_of_darkness.json
+++ b/src/main/resources/assets/ebwizardry/spells/plague_of_darkness.json
@@ -14,7 +14,7 @@
"element": "necromancy",
"type": "attack",
"cost": 75,
- "chargeup": 0,
+ "chargeup": 15,
"cooldown": 200,
"base_properties": {
"effect_radius": 5,
diff --git a/src/main/resources/assets/ebwizardry/spells/possession.json b/src/main/resources/assets/ebwizardry/spells/possession.json
index ade443bb..2ef90fee 100644
--- a/src/main/resources/assets/ebwizardry/spells/possession.json
+++ b/src/main/resources/assets/ebwizardry/spells/possession.json
@@ -14,7 +14,7 @@
"element": "necromancy",
"type": "alteration",
"cost": 100,
- "chargeup": 0,
+ "chargeup": 15,
"cooldown": 300,
"base_properties": {
"range": 8,
diff --git a/src/main/resources/assets/ebwizardry/spells/ray_of_purification.json b/src/main/resources/assets/ebwizardry/spells/ray_of_purification.json
index 940eb3e5..ee5b3f02 100644
--- a/src/main/resources/assets/ebwizardry/spells/ray_of_purification.json
+++ b/src/main/resources/assets/ebwizardry/spells/ray_of_purification.json
@@ -14,7 +14,7 @@
"element": "healing",
"type": "attack",
"cost": 10,
- "chargeup": 0,
+ "chargeup": 10,
"cooldown": 0,
"base_properties": {
"range": 10,
diff --git a/src/main/resources/assets/ebwizardry/spells/remove_curse.json b/src/main/resources/assets/ebwizardry/spells/remove_curse.json
index ca69c0bf..dce3fb10 100644
--- a/src/main/resources/assets/ebwizardry/spells/remove_curse.json
+++ b/src/main/resources/assets/ebwizardry/spells/remove_curse.json
@@ -14,7 +14,7 @@
"element": "healing",
"type": "defence",
"cost": 50,
- "chargeup": 0,
+ "chargeup": 20,
"cooldown": 80,
"base_properties": {}
}
\ No newline at end of file
diff --git a/src/main/resources/assets/ebwizardry/spells/resurrection.json b/src/main/resources/assets/ebwizardry/spells/resurrection.json
index 402e2f2d..d9124f5f 100644
--- a/src/main/resources/assets/ebwizardry/spells/resurrection.json
+++ b/src/main/resources/assets/ebwizardry/spells/resurrection.json
@@ -14,7 +14,7 @@
"element": "healing",
"type": "alteration",
"cost": 150,
- "chargeup": 0,
+ "chargeup": 25,
"cooldown": 400,
"base_properties": {
"effect_radius": 8,
diff --git a/src/main/resources/assets/ebwizardry/spells/ring_of_fire.json b/src/main/resources/assets/ebwizardry/spells/ring_of_fire.json
index 79f7510e..4b31b96a 100644
--- a/src/main/resources/assets/ebwizardry/spells/ring_of_fire.json
+++ b/src/main/resources/assets/ebwizardry/spells/ring_of_fire.json
@@ -14,7 +14,7 @@
"element": "fire",
"type": "construct",
"cost": 30,
- "chargeup": 0,
+ "chargeup": 10,
"cooldown": 100,
"base_properties": {
"duration": 600,
diff --git a/src/main/resources/assets/ebwizardry/spells/satiety.json b/src/main/resources/assets/ebwizardry/spells/satiety.json
index 06dc1140..a28a120e 100644
--- a/src/main/resources/assets/ebwizardry/spells/satiety.json
+++ b/src/main/resources/assets/ebwizardry/spells/satiety.json
@@ -14,7 +14,7 @@
"element": "healing",
"type": "buff",
"cost": 40,
- "chargeup": 0,
+ "chargeup": 15,
"cooldown": 50,
"base_properties": {
"hunger_points": 16,
diff --git a/src/main/resources/assets/ebwizardry/spells/shockwave.json b/src/main/resources/assets/ebwizardry/spells/shockwave.json
index c2fbf6dd..c84556dc 100644
--- a/src/main/resources/assets/ebwizardry/spells/shockwave.json
+++ b/src/main/resources/assets/ebwizardry/spells/shockwave.json
@@ -14,7 +14,7 @@
"element": "sorcery",
"type": "attack",
"cost": 65,
- "chargeup": 0,
+ "chargeup": 20,
"cooldown": 150,
"base_properties": {
"blast_radius": 5,
diff --git a/src/main/resources/assets/ebwizardry/spells/silverfish_swarm.json b/src/main/resources/assets/ebwizardry/spells/silverfish_swarm.json
index 9390042c..8bf95392 100644
--- a/src/main/resources/assets/ebwizardry/spells/silverfish_swarm.json
+++ b/src/main/resources/assets/ebwizardry/spells/silverfish_swarm.json
@@ -14,7 +14,7 @@
"element": "earth",
"type": "minion",
"cost": 80,
- "chargeup": 0,
+ "chargeup": 20,
"cooldown": 300,
"base_properties": {
"minion_lifetime": 600,
diff --git a/src/main/resources/assets/ebwizardry/spells/slow_time.json b/src/main/resources/assets/ebwizardry/spells/slow_time.json
index ec7eee50..0f4b666d 100644
--- a/src/main/resources/assets/ebwizardry/spells/slow_time.json
+++ b/src/main/resources/assets/ebwizardry/spells/slow_time.json
@@ -14,7 +14,7 @@
"element": "sorcery",
"type": "alteration",
"cost": 100,
- "chargeup": 0,
+ "chargeup": 15,
"cooldown": 200,
"base_properties": {
"slow_time_duration": 300,
diff --git a/src/main/resources/assets/ebwizardry/spells/spectral_pathway.json b/src/main/resources/assets/ebwizardry/spells/spectral_pathway.json
index 0e775f40..a7a91e1e 100644
--- a/src/main/resources/assets/ebwizardry/spells/spectral_pathway.json
+++ b/src/main/resources/assets/ebwizardry/spells/spectral_pathway.json
@@ -14,7 +14,7 @@
"element": "sorcery",
"type": "utility",
"cost": 40,
- "chargeup": 0,
+ "chargeup": 15,
"cooldown": 300,
"base_properties": {
"length": 25,
diff --git a/src/main/resources/assets/ebwizardry/spells/spider_swarm.json b/src/main/resources/assets/ebwizardry/spells/spider_swarm.json
index ffdc4197..c6358c95 100644
--- a/src/main/resources/assets/ebwizardry/spells/spider_swarm.json
+++ b/src/main/resources/assets/ebwizardry/spells/spider_swarm.json
@@ -14,7 +14,7 @@
"element": "earth",
"type": "minion",
"cost": 45,
- "chargeup": 0,
+ "chargeup": 10,
"cooldown": 200,
"base_properties": {
"minion_lifetime": 600,
diff --git a/src/main/resources/assets/ebwizardry/spells/stormcloud.json b/src/main/resources/assets/ebwizardry/spells/stormcloud.json
index 20a33a0a..96711f1a 100644
--- a/src/main/resources/assets/ebwizardry/spells/stormcloud.json
+++ b/src/main/resources/assets/ebwizardry/spells/stormcloud.json
@@ -14,7 +14,7 @@
"element": "lightning",
"type": "construct",
"cost": 60,
- "chargeup": 0,
+ "chargeup": 10,
"cooldown": 150,
"base_properties": {
"duration": 600,
diff --git a/src/main/resources/assets/ebwizardry/spells/summon_blaze.json b/src/main/resources/assets/ebwizardry/spells/summon_blaze.json
index 7621260f..cd3707e6 100644
--- a/src/main/resources/assets/ebwizardry/spells/summon_blaze.json
+++ b/src/main/resources/assets/ebwizardry/spells/summon_blaze.json
@@ -14,7 +14,7 @@
"element": "fire",
"type": "minion",
"cost": 40,
- "chargeup": 0,
+ "chargeup": 10,
"cooldown": 200,
"base_properties": {
"minion_lifetime": 600,
diff --git a/src/main/resources/assets/ebwizardry/spells/summon_ice_giant.json b/src/main/resources/assets/ebwizardry/spells/summon_ice_giant.json
index 810f0c67..92738b1a 100644
--- a/src/main/resources/assets/ebwizardry/spells/summon_ice_giant.json
+++ b/src/main/resources/assets/ebwizardry/spells/summon_ice_giant.json
@@ -14,7 +14,7 @@
"element": "ice",
"type": "minion",
"cost": 100,
- "chargeup": 0,
+ "chargeup": 20,
"cooldown": 400,
"base_properties": {
"minion_lifetime": 600,
diff --git a/src/main/resources/assets/ebwizardry/spells/summon_ice_wraith.json b/src/main/resources/assets/ebwizardry/spells/summon_ice_wraith.json
index 934b94b6..77a51efe 100644
--- a/src/main/resources/assets/ebwizardry/spells/summon_ice_wraith.json
+++ b/src/main/resources/assets/ebwizardry/spells/summon_ice_wraith.json
@@ -14,7 +14,7 @@
"element": "ice",
"type": "minion",
"cost": 40,
- "chargeup": 0,
+ "chargeup": 10,
"cooldown": 200,
"base_properties": {
"minion_lifetime": 600,
diff --git a/src/main/resources/assets/ebwizardry/spells/summon_iron_golem.json b/src/main/resources/assets/ebwizardry/spells/summon_iron_golem.json
index 01991e04..fca50afc 100644
--- a/src/main/resources/assets/ebwizardry/spells/summon_iron_golem.json
+++ b/src/main/resources/assets/ebwizardry/spells/summon_iron_golem.json
@@ -14,7 +14,7 @@
"element": "sorcery",
"type": "minion",
"cost": 175,
- "chargeup": 0,
+ "chargeup": 20,
"cooldown": 400,
"base_properties": {
"summon_radius": 2
diff --git a/src/main/resources/assets/ebwizardry/spells/summon_lightning_wraith.json b/src/main/resources/assets/ebwizardry/spells/summon_lightning_wraith.json
index e04aa12b..b2baf94e 100644
--- a/src/main/resources/assets/ebwizardry/spells/summon_lightning_wraith.json
+++ b/src/main/resources/assets/ebwizardry/spells/summon_lightning_wraith.json
@@ -14,7 +14,7 @@
"element": "lightning",
"type": "minion",
"cost": 40,
- "chargeup": 0,
+ "chargeup": 10,
"cooldown": 200,
"base_properties": {
"minion_lifetime": 600,
diff --git a/src/main/resources/assets/ebwizardry/spells/summon_phoenix.json b/src/main/resources/assets/ebwizardry/spells/summon_phoenix.json
index 13664fcf..827beb31 100644
--- a/src/main/resources/assets/ebwizardry/spells/summon_phoenix.json
+++ b/src/main/resources/assets/ebwizardry/spells/summon_phoenix.json
@@ -14,7 +14,7 @@
"element": "fire",
"type": "minion",
"cost": 150,
- "chargeup": 0,
+ "chargeup": 20,
"cooldown": 400,
"base_properties": {
"minion_lifetime": 600,
diff --git a/src/main/resources/assets/ebwizardry/spells/summon_shadow_wraith.json b/src/main/resources/assets/ebwizardry/spells/summon_shadow_wraith.json
index e699bf4b..2c30faaa 100644
--- a/src/main/resources/assets/ebwizardry/spells/summon_shadow_wraith.json
+++ b/src/main/resources/assets/ebwizardry/spells/summon_shadow_wraith.json
@@ -14,7 +14,7 @@
"element": "necromancy",
"type": "minion",
"cost": 100,
- "chargeup": 0,
+ "chargeup": 20,
"cooldown": 400,
"base_properties": {
"minion_lifetime": 600,
diff --git a/src/main/resources/assets/ebwizardry/spells/summon_skeleton_legion.json b/src/main/resources/assets/ebwizardry/spells/summon_skeleton_legion.json
index 3bc7f2a8..524a1c3f 100644
--- a/src/main/resources/assets/ebwizardry/spells/summon_skeleton_legion.json
+++ b/src/main/resources/assets/ebwizardry/spells/summon_skeleton_legion.json
@@ -14,7 +14,7 @@
"element": "necromancy",
"type": "minion",
"cost": 100,
- "chargeup": 0,
+ "chargeup": 20,
"cooldown": 400,
"base_properties": {
"minion_lifetime": 1200,
diff --git a/src/main/resources/assets/ebwizardry/spells/summon_spirit_horse.json b/src/main/resources/assets/ebwizardry/spells/summon_spirit_horse.json
index 73b29590..55e5a9ff 100644
--- a/src/main/resources/assets/ebwizardry/spells/summon_spirit_horse.json
+++ b/src/main/resources/assets/ebwizardry/spells/summon_spirit_horse.json
@@ -14,7 +14,7 @@
"element": "earth",
"type": "minion",
"cost": 50,
- "chargeup": 0,
+ "chargeup": 10,
"cooldown": 150,
"base_properties": {
"summon_radius": 2
diff --git a/src/main/resources/assets/ebwizardry/spells/summon_storm_elemental.json b/src/main/resources/assets/ebwizardry/spells/summon_storm_elemental.json
index 02c1f50d..51d117d6 100644
--- a/src/main/resources/assets/ebwizardry/spells/summon_storm_elemental.json
+++ b/src/main/resources/assets/ebwizardry/spells/summon_storm_elemental.json
@@ -14,7 +14,7 @@
"element": "lightning",
"type": "minion",
"cost": 100,
- "chargeup": 0,
+ "chargeup": 20,
"cooldown": 400,
"base_properties": {
"minion_lifetime": 600,
diff --git a/src/main/resources/assets/ebwizardry/spells/summon_wither_skeleton.json b/src/main/resources/assets/ebwizardry/spells/summon_wither_skeleton.json
index f16431f2..c1e77a0d 100644
--- a/src/main/resources/assets/ebwizardry/spells/summon_wither_skeleton.json
+++ b/src/main/resources/assets/ebwizardry/spells/summon_wither_skeleton.json
@@ -14,7 +14,7 @@
"element": "necromancy",
"type": "minion",
"cost": 35,
- "chargeup": 0,
+ "chargeup": 10,
"cooldown": 150,
"base_properties": {
"minion_lifetime": 600,
diff --git a/src/main/resources/assets/ebwizardry/spells/thunderstorm.json b/src/main/resources/assets/ebwizardry/spells/thunderstorm.json
index c414078e..5df426ea 100644
--- a/src/main/resources/assets/ebwizardry/spells/thunderstorm.json
+++ b/src/main/resources/assets/ebwizardry/spells/thunderstorm.json
@@ -14,7 +14,7 @@
"element": "lightning",
"type": "attack",
"cost": 100,
- "chargeup": 0,
+ "chargeup": 20,
"cooldown": 250,
"base_properties": {
"effect_radius": 10,
diff --git a/src/main/resources/assets/ebwizardry/spells/tornado.json b/src/main/resources/assets/ebwizardry/spells/tornado.json
index 87d8cfbd..e62b097f 100644
--- a/src/main/resources/assets/ebwizardry/spells/tornado.json
+++ b/src/main/resources/assets/ebwizardry/spells/tornado.json
@@ -14,7 +14,7 @@
"element": "earth",
"type": "attack",
"cost": 35,
- "chargeup": 0,
+ "chargeup": 10,
"cooldown": 80,
"base_properties": {
"duration": 200,
diff --git a/src/main/resources/assets/ebwizardry/spells/transience.json b/src/main/resources/assets/ebwizardry/spells/transience.json
index ff5886c2..651eae30 100644
--- a/src/main/resources/assets/ebwizardry/spells/transience.json
+++ b/src/main/resources/assets/ebwizardry/spells/transience.json
@@ -14,7 +14,7 @@
"element": "healing",
"type": "buff",
"cost": 50,
- "chargeup": 0,
+ "chargeup": 15,
"cooldown": 100,
"base_properties": {
"effect_duration": 400
diff --git a/src/main/resources/assets/ebwizardry/spells/transportation.json b/src/main/resources/assets/ebwizardry/spells/transportation.json
index 0dbfcbfb..8ba20ce8 100644
--- a/src/main/resources/assets/ebwizardry/spells/transportation.json
+++ b/src/main/resources/assets/ebwizardry/spells/transportation.json
@@ -14,7 +14,7 @@
"element": "sorcery",
"type": "utility",
"cost": 100,
- "chargeup": 0,
+ "chargeup": 20,
"cooldown": 100,
"base_properties": {
"teleport_countdown": 75
diff --git a/src/main/resources/assets/ebwizardry/spells/vanishing_box.json b/src/main/resources/assets/ebwizardry/spells/vanishing_box.json
index c6e1eab5..aff160d6 100644
--- a/src/main/resources/assets/ebwizardry/spells/vanishing_box.json
+++ b/src/main/resources/assets/ebwizardry/spells/vanishing_box.json
@@ -14,7 +14,7 @@
"element": "sorcery",
"type": "utility",
"cost": 45,
- "chargeup": 0,
+ "chargeup": 10,
"cooldown": 70,
"base_properties": {}
}
\ No newline at end of file
diff --git a/src/main/resources/assets/ebwizardry/spells/vex_swarm.json b/src/main/resources/assets/ebwizardry/spells/vex_swarm.json
index e54c7cc3..7c7c5f09 100644
--- a/src/main/resources/assets/ebwizardry/spells/vex_swarm.json
+++ b/src/main/resources/assets/ebwizardry/spells/vex_swarm.json
@@ -14,7 +14,7 @@
"element": "sorcery",
"type": "minion",
"cost": 50,
- "chargeup": 0,
+ "chargeup": 10,
"cooldown": 200,
"base_properties": {
"minion_lifetime": 600,
diff --git a/src/main/resources/assets/ebwizardry/spells/wall_of_frost.json b/src/main/resources/assets/ebwizardry/spells/wall_of_frost.json
index 87e3daf6..844c2150 100644
--- a/src/main/resources/assets/ebwizardry/spells/wall_of_frost.json
+++ b/src/main/resources/assets/ebwizardry/spells/wall_of_frost.json
@@ -14,7 +14,7 @@
"element": "ice",
"type": "utility",
"cost": 15,
- "chargeup": 0,
+ "chargeup": 15,
"cooldown": 0,
"base_properties": {
"duration": 600,
diff --git a/src/main/resources/assets/ebwizardry/spells/water_breathing.json b/src/main/resources/assets/ebwizardry/spells/water_breathing.json
index 9cee0e43..cb03821e 100644
--- a/src/main/resources/assets/ebwizardry/spells/water_breathing.json
+++ b/src/main/resources/assets/ebwizardry/spells/water_breathing.json
@@ -14,7 +14,7 @@
"element": "earth",
"type": "buff",
"cost": 30,
- "chargeup": 0,
+ "chargeup": 15,
"cooldown": 250,
"base_properties": {
"water_breathing_duration": 1200,
diff --git a/src/main/resources/assets/ebwizardry/spells/wither_skull.json b/src/main/resources/assets/ebwizardry/spells/wither_skull.json
index e1bc8083..a8fca3bb 100644
--- a/src/main/resources/assets/ebwizardry/spells/wither_skull.json
+++ b/src/main/resources/assets/ebwizardry/spells/wither_skull.json
@@ -14,7 +14,7 @@
"element": "necromancy",
"type": "attack",
"cost": 20,
- "chargeup": 0,
+ "chargeup": 5,
"cooldown": 30,
"base_properties": {
"acceleration": 0.1
diff --git a/src/main/resources/assets/ebwizardry/spells/zombie_apocalypse.json b/src/main/resources/assets/ebwizardry/spells/zombie_apocalypse.json
index 0b565af8..d6686e9e 100644
--- a/src/main/resources/assets/ebwizardry/spells/zombie_apocalypse.json
+++ b/src/main/resources/assets/ebwizardry/spells/zombie_apocalypse.json
@@ -14,7 +14,7 @@
"element": "necromancy",
"type": "construct",
"cost": 150,
- "chargeup": 0,
+ "chargeup": 25,
"cooldown": 300,
"base_properties": {
"duration": 500,
diff --git a/src/main/resources/assets/ebwizardry/textures/gui/spell_charge_meter.png b/src/main/resources/assets/ebwizardry/textures/gui/spell_charge_meter.png
new file mode 100644
index 00000000..dd8b6019
Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/gui/spell_charge_meter.png differ