diff --git a/src/main/java/electroblob/wizardry/client/model/WizardryModels.java b/src/main/java/electroblob/wizardry/client/model/WizardryModels.java index 04ddaac8..75ef3689 100644 --- a/src/main/java/electroblob/wizardry/client/model/WizardryModels.java +++ b/src/main/java/electroblob/wizardry/client/model/WizardryModels.java @@ -289,6 +289,7 @@ public final class WizardryModels { registerItemModel(WizardryItems.charm_minion_health); registerItemModel(WizardryItems.charm_minion_variants); registerItemModel(WizardryItems.charm_undead_helmets); + registerItemModel(WizardryItems.charm_hunger_casting); registerItemModel(WizardryItems.charm_flight); registerItemModel(WizardryItems.charm_growth); registerItemModel(WizardryItems.charm_abseiling); diff --git a/src/main/java/electroblob/wizardry/item/ItemArtefact.java b/src/main/java/electroblob/wizardry/item/ItemArtefact.java index 915c42c1..4174b4ea 100644 --- a/src/main/java/electroblob/wizardry/item/ItemArtefact.java +++ b/src/main/java/electroblob/wizardry/item/ItemArtefact.java @@ -10,6 +10,7 @@ import electroblob.wizardry.entity.projectile.EntityDart; import electroblob.wizardry.entity.projectile.EntityForceOrb; import electroblob.wizardry.entity.projectile.EntityIceShard; import electroblob.wizardry.event.SpellCastEvent; +import electroblob.wizardry.event.SpellCastEvent.Source; import electroblob.wizardry.integration.DamageSafetyChecker; import electroblob.wizardry.integration.baubles.WizardryBaublesIntegration; import electroblob.wizardry.registry.*; @@ -462,6 +463,30 @@ public class ItemArtefact extends Item { }else if(artefact == WizardryItems.charm_experience_tome){ modifiers.set(SpellModifiers.PROGRESSION, modifiers.get(SpellModifiers.PROGRESSION) * 1.5f, false); + + }else if(artefact == WizardryItems.charm_hunger_casting){ + + if(!player.capabilities.isCreativeMode && event.getSource() == Source.WAND && !event.getSpell().isContinuous){ // TODO: Continuous spells? + + ItemStack wand = player.getHeldItemMainhand(); + + if(!(wand.getItem() instanceof ISpellCastingItem && wand.getItem() instanceof IManaStoringItem)){ + wand = player.getHeldItemOffhand(); + if(!(wand.getItem() instanceof ISpellCastingItem && wand.getItem() instanceof IManaStoringItem)) return; + } + + if(((IManaStoringItem)wand.getItem()).getMana(wand) < event.getSpell().getCost() * modifiers.get(SpellModifiers.COST)){ + + int hunger = event.getSpell().getCost() / 5; + + if(player.getFoodStats().getFoodLevel() >= hunger){ + player.getFoodStats().addStats(-hunger, 0); + modifiers.set(SpellModifiers.COST, 0, false); + } + } + + } + } } } diff --git a/src/main/java/electroblob/wizardry/registry/WizardryItems.java b/src/main/java/electroblob/wizardry/registry/WizardryItems.java index 21c31594..827a68cf 100644 --- a/src/main/java/electroblob/wizardry/registry/WizardryItems.java +++ b/src/main/java/electroblob/wizardry/registry/WizardryItems.java @@ -273,6 +273,7 @@ public final class WizardryItems { public static final Item charm_minion_health = placeholder(); public static final Item charm_minion_variants = placeholder(); public static final Item charm_undead_helmets = placeholder(); + public static final Item charm_hunger_casting = placeholder(); public static final Item charm_flight = placeholder(); public static final Item charm_growth = placeholder(); public static final Item charm_abseiling = placeholder(); @@ -637,6 +638,7 @@ public final class WizardryItems { registerItem(registry, "charm_minion_health", new ItemArtefact(EnumRarity.UNCOMMON, ItemArtefact.Type.CHARM)); registerItem(registry, "charm_minion_variants", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.CHARM)); registerItem(registry, "charm_undead_helmets", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.CHARM)); + registerItem(registry, "charm_hunger_casting", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.CHARM)); registerItem(registry, "charm_flight", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.CHARM)); registerItem(registry, "charm_growth", new ItemArtefact(EnumRarity.UNCOMMON, ItemArtefact.Type.CHARM)); registerItem(registry, "charm_abseiling", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.CHARM)); diff --git a/src/main/resources/assets/ebwizardry/lang/en_gb.lang b/src/main/resources/assets/ebwizardry/lang/en_gb.lang index 78fb8596..170e7096 100644 --- a/src/main/resources/assets/ebwizardry/lang/en_gb.lang +++ b/src/main/resources/assets/ebwizardry/lang/en_gb.lang @@ -384,6 +384,8 @@ item.ebwizardry\:charm_minion_variants.name=Talisman of Transformation item.ebwizardry\:charm_minion_variants.desc=Summoned zombies are husks; summoned skeletons are strays item.ebwizardry\:charm_undead_helmets.name=Cursed Helm item.ebwizardry\:charm_undead_helmets.desc=Summoned zombies and skeletons have leather caps to protect them from sunlight +item.ebwizardry\:charm_hunger_casting.name=Demonic Seal +item.ebwizardry\:charm_hunger_casting.desc=When out of mana, hunger can be used to cast spells item.ebwizardry\:charm_flight.name=Emerald Beetle Wing item.ebwizardry\:charm_flight.desc=Flight and Glide are 50%% faster item.ebwizardry\:charm_growth.name=Crystal Flower Charm diff --git a/src/main/resources/assets/ebwizardry/lang/en_us.lang b/src/main/resources/assets/ebwizardry/lang/en_us.lang index 38d598e1..79184bb9 100644 --- a/src/main/resources/assets/ebwizardry/lang/en_us.lang +++ b/src/main/resources/assets/ebwizardry/lang/en_us.lang @@ -384,6 +384,8 @@ item.ebwizardry\:charm_minion_variants.name=Talisman of Transformation item.ebwizardry\:charm_minion_variants.desc=Summoned zombies are husks; summoned skeletons are strays item.ebwizardry\:charm_undead_helmets.name=Cursed Helm item.ebwizardry\:charm_undead_helmets.desc=Summoned zombies and skeletons have leather caps to protect them from sunlight +item.ebwizardry\:charm_hunger_casting.name=Demonic Seal +item.ebwizardry\:charm_hunger_casting.desc=When out of mana, hunger can be used to cast spells item.ebwizardry\:charm_flight.name=Emerald Beetle Wing item.ebwizardry\:charm_flight.desc=Flight and Glide are 50%% faster item.ebwizardry\:charm_growth.name=Crystal Flower Charm diff --git a/src/main/resources/assets/ebwizardry/models/item/charm_hunger_casting.json b/src/main/resources/assets/ebwizardry/models/item/charm_hunger_casting.json new file mode 100644 index 00000000..95f9c1c7 --- /dev/null +++ b/src/main/resources/assets/ebwizardry/models/item/charm_hunger_casting.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "ebwizardry:items/charm_hunger_casting" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/ebwizardry/textures/items/charm_hunger_casting.png b/src/main/resources/assets/ebwizardry/textures/items/charm_hunger_casting.png new file mode 100644 index 00000000..dfdbece7 Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/items/charm_hunger_casting.png differ