v0.7.0: basic implementation on 6 more brews/elixirs

This commit is contained in:
Evan Debenham 2018-08-19 19:33:17 -04:00
parent a98f85f8b6
commit c2b6518faf
12 changed files with 424 additions and 4 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 17 KiB

View File

@ -27,11 +27,17 @@ import com.shatteredpixel.shatteredpixeldungeon.items.food.Blandfruit;
import com.shatteredpixel.shatteredpixeldungeon.items.food.Feast; import com.shatteredpixel.shatteredpixeldungeon.items.food.Feast;
import com.shatteredpixel.shatteredpixeldungeon.items.food.StewedMeat; import com.shatteredpixel.shatteredpixeldungeon.items.food.StewedMeat;
import com.shatteredpixel.shatteredpixeldungeon.items.potions.Potion; import com.shatteredpixel.shatteredpixeldungeon.items.potions.Potion;
import com.shatteredpixel.shatteredpixeldungeon.items.potions.brews.BlizzardBrew;
import com.shatteredpixel.shatteredpixeldungeon.items.potions.brews.FrigidBrew; import com.shatteredpixel.shatteredpixeldungeon.items.potions.brews.FrigidBrew;
import com.shatteredpixel.shatteredpixeldungeon.items.potions.brews.FrostfireBrew; import com.shatteredpixel.shatteredpixeldungeon.items.potions.brews.FrostfireBrew;
import com.shatteredpixel.shatteredpixeldungeon.items.potions.brews.InfernalBrew;
import com.shatteredpixel.shatteredpixeldungeon.items.potions.brews.ShockingBrew;
import com.shatteredpixel.shatteredpixeldungeon.items.potions.brews.WickedBrew; import com.shatteredpixel.shatteredpixeldungeon.items.potions.brews.WickedBrew;
import com.shatteredpixel.shatteredpixeldungeon.items.potions.elixirs.ElixirOfDragonsBlood; import com.shatteredpixel.shatteredpixeldungeon.items.potions.elixirs.ElixirOfDragonsBlood;
import com.shatteredpixel.shatteredpixeldungeon.items.potions.elixirs.ElixirOfEarthenPower; import com.shatteredpixel.shatteredpixeldungeon.items.potions.elixirs.ElixirOfEarthenPower;
import com.shatteredpixel.shatteredpixeldungeon.items.potions.elixirs.ElixirOfHoneyedHealing;
import com.shatteredpixel.shatteredpixeldungeon.items.potions.elixirs.ElixirOfRestoration;
import com.shatteredpixel.shatteredpixeldungeon.items.potions.elixirs.ElixirOfSurgingVitality;
import com.shatteredpixel.shatteredpixeldungeon.items.potions.elixirs.ElixirOfToxicEssence; import com.shatteredpixel.shatteredpixeldungeon.items.potions.elixirs.ElixirOfToxicEssence;
import com.shatteredpixel.shatteredpixeldungeon.items.potions.exotic.ExoticPotion; import com.shatteredpixel.shatteredpixeldungeon.items.potions.exotic.ExoticPotion;
import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.Scroll; import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.Scroll;
@ -145,9 +151,15 @@ public abstract class Recipe {
new ElixirOfDragonsBlood.Recipe(), new ElixirOfDragonsBlood.Recipe(),
new ElixirOfEarthenPower.Recipe(), new ElixirOfEarthenPower.Recipe(),
new ElixirOfToxicEssence.Recipe(), new ElixirOfToxicEssence.Recipe(),
new ElixirOfHoneyedHealing.Recipe(),
new ElixirOfRestoration.Recipe(),
new ElixirOfSurgingVitality.Recipe(),
new FrigidBrew.Recipe(), new FrigidBrew.Recipe(),
new FrostfireBrew.Recipe(), new FrostfireBrew.Recipe(),
new WickedBrew.Recipe(), new WickedBrew.Recipe(),
new BlizzardBrew.Recipe(),
new InfernalBrew.Recipe(),
new ShockingBrew.Recipe(),
new StewedMeat.twoMeat() new StewedMeat.twoMeat()
}; };

View File

@ -40,6 +40,7 @@ import com.shatteredpixel.shatteredpixeldungeon.items.Item;
import com.shatteredpixel.shatteredpixeldungeon.items.ItemStatusHandler; import com.shatteredpixel.shatteredpixeldungeon.items.ItemStatusHandler;
import com.shatteredpixel.shatteredpixeldungeon.items.Recipe; import com.shatteredpixel.shatteredpixeldungeon.items.Recipe;
import com.shatteredpixel.shatteredpixeldungeon.items.bags.Bag; import com.shatteredpixel.shatteredpixeldungeon.items.bags.Bag;
import com.shatteredpixel.shatteredpixeldungeon.items.potions.elixirs.ElixirOfHoneyedHealing;
import com.shatteredpixel.shatteredpixeldungeon.items.potions.exotic.ExoticPotion; import com.shatteredpixel.shatteredpixeldungeon.items.potions.exotic.ExoticPotion;
import com.shatteredpixel.shatteredpixeldungeon.items.potions.exotic.PotionOfCleansing; import com.shatteredpixel.shatteredpixeldungeon.items.potions.exotic.PotionOfCleansing;
import com.shatteredpixel.shatteredpixeldungeon.items.potions.exotic.PotionOfCorrosiveGas; import com.shatteredpixel.shatteredpixeldungeon.items.potions.exotic.PotionOfCorrosiveGas;
@ -140,7 +141,12 @@ public class Potion extends Item {
static{ static{
canThrowPots.add(PotionOfPurity.class); canThrowPots.add(PotionOfPurity.class);
canThrowPots.add(PotionOfLevitation.class); canThrowPots.add(PotionOfLevitation.class);
//exotic
canThrowPots.add(PotionOfCleansing.class); canThrowPots.add(PotionOfCleansing.class);
//elixirs
canThrowPots.add(ElixirOfHoneyedHealing.class);
} }
protected static ItemStatusHandler<Potion> handler; protected static ItemStatusHandler<Potion> handler;

View File

@ -46,7 +46,7 @@ public class PotionOfHealing extends Potion {
//starts out healing 30 hp, equalizes with hero health total at level 11 //starts out healing 30 hp, equalizes with hero health total at level 11
Buff.affect( hero, Healing.class ).setHeal((int)(0.8f*hero.HT + 14), 0.25f, 0); Buff.affect( hero, Healing.class ).setHeal((int)(0.8f*hero.HT + 14), 0.25f, 0);
cure( hero ); cure( hero );
GLog.p( Messages.get(this, "heal") ); GLog.p( Messages.get(this, "heal") ); //TODO make the healing buff more visible
} }
public static void cure( Char ch ) { public static void cure( Char ch ) {

View File

@ -0,0 +1,52 @@
/*
* Pixel Dungeon
* Copyright (C) 2012-2015 Oleg Dolya
*
* Shattered Pixel Dungeon
* Copyright (C) 2014-2018 Evan Debenham
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>
*/
package com.shatteredpixel.shatteredpixeldungeon.items.potions.brews;
import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfFrost;
import com.shatteredpixel.shatteredpixeldungeon.items.potions.exotic.PotionOfSnapFreeze;
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet;
public class BlizzardBrew extends Brew {
{
image = ItemSpriteSheet.BREW_BLIZZARD;
}
@Override
public void shatter(int cell) {
//TODO
}
public static class Recipe extends com.shatteredpixel.shatteredpixeldungeon.items.Recipe.SimpleRecipe {
{
inputs = new Class[]{PotionOfSnapFreeze.class, PotionOfFrost.class};
inQuantity = new int[]{1, 1};
cost = 1;
output = BlizzardBrew.class;
outQuantity = 1;
}
}
}

View File

@ -0,0 +1,52 @@
/*
* Pixel Dungeon
* Copyright (C) 2012-2015 Oleg Dolya
*
* Shattered Pixel Dungeon
* Copyright (C) 2014-2018 Evan Debenham
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>
*/
package com.shatteredpixel.shatteredpixeldungeon.items.potions.brews;
import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfLiquidFlame;
import com.shatteredpixel.shatteredpixeldungeon.items.potions.exotic.PotionOfDragonsBreath;
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet;
public class InfernalBrew extends Brew {
{
image = ItemSpriteSheet.BREW_INFERNAL;
}
@Override
public void shatter(int cell) {
//TODO
}
public static class Recipe extends com.shatteredpixel.shatteredpixeldungeon.items.Recipe.SimpleRecipe {
{
inputs = new Class[]{PotionOfDragonsBreath.class, PotionOfLiquidFlame.class};
inQuantity = new int[]{1, 1};
cost = 1;
output = InfernalBrew.class;
outQuantity = 1;
}
}
}

View File

@ -0,0 +1,70 @@
/*
* Pixel Dungeon
* Copyright (C) 2012-2015 Oleg Dolya
*
* Shattered Pixel Dungeon
* Copyright (C) 2014-2018 Evan Debenham
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>
*/
package com.shatteredpixel.shatteredpixeldungeon.items.potions.brews;
import com.shatteredpixel.shatteredpixeldungeon.Assets;
import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.Blob;
import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.Electricity;
import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfParalyticGas;
import com.shatteredpixel.shatteredpixeldungeon.items.potions.exotic.PotionOfStormClouds;
import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene;
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet;
import com.shatteredpixel.shatteredpixeldungeon.utils.BArray;
import com.watabou.noosa.audio.Sample;
import com.watabou.utils.PathFinder;
public class ShockingBrew extends Brew {
{
image = ItemSpriteSheet.BREW_SHOCKING;
}
@Override
public void shatter(int cell) {
if (Dungeon.level.heroFOV[cell]) {
splash( cell );
Sample.INSTANCE.play( Assets.SND_SHATTER );
}
PathFinder.buildDistanceMap( cell, BArray.not( Dungeon.level.solid, null ), 2 );
for (int i = 0; i < PathFinder.distance.length; i++) {
if (PathFinder.distance[i] < Integer.MAX_VALUE) {
GameScene.add(Blob.seed(i, 10, Electricity.class));
}
}
Sample.INSTANCE.play(Assets.SND_LIGHTNING);
}
public static class Recipe extends com.shatteredpixel.shatteredpixeldungeon.items.Recipe.SimpleRecipe {
{
inputs = new Class[]{PotionOfParalyticGas.class, PotionOfStormClouds.class};
inQuantity = new int[]{1, 1};
cost = 1;
output = ShockingBrew.class;
outQuantity = 1;
}
}
}

View File

@ -0,0 +1,81 @@
/*
* Pixel Dungeon
* Copyright (C) 2012-2015 Oleg Dolya
*
* Shattered Pixel Dungeon
* Copyright (C) 2014-2018 Evan Debenham
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>
*/
package com.shatteredpixel.shatteredpixeldungeon.items.potions.elixirs;
import com.shatteredpixel.shatteredpixeldungeon.Assets;
import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
import com.shatteredpixel.shatteredpixeldungeon.actors.Actor;
import com.shatteredpixel.shatteredpixeldungeon.actors.Char;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Charm;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Healing;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Hunger;
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
import com.shatteredpixel.shatteredpixeldungeon.items.Honeypot;
import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfHealing;
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet;
import com.watabou.noosa.audio.Sample;
public class ElixirOfHoneyedHealing extends Elixir {
{
image = ItemSpriteSheet.ELIXIR_HONEY;
}
@Override
public void apply(Hero hero) {
Buff.affect( hero, Healing.class ).setHeal((int)(0.8f*hero.HT + 14), 0.25f, 0);
hero.buff(Hunger.class).satisfy(Hunger.STARVING/5f);
}
@Override
public void shatter(int cell) {
if (Dungeon.level.heroFOV[cell]) {
Sample.INSTANCE.play( Assets.SND_SHATTER );
splash( cell );
}
Char ch = Actor.findChar(cell);
if (ch != null){
Buff.affect( ch, Healing.class ).setHeal((int)(0.8f*ch.HT + 14), 0.25f, 0);
if (ch.alignment != curUser.alignment){
//TODO this is effectively a free kill against enemies, do we want that?
Buff.affect(ch, Charm.class, 999f).object = curUser.id();
//TODO specific bee interactions?
}
}
}
public static class Recipe extends com.shatteredpixel.shatteredpixeldungeon.items.Recipe.SimpleRecipe {
{
inputs = new Class[]{PotionOfHealing.class, Honeypot.ShatteredPot.class};
inQuantity = new int[]{1, 1};
cost = 2;
output = ElixirOfHoneyedHealing.class;
outQuantity = 1;
}
}
}

View File

@ -0,0 +1,56 @@
/*
* Pixel Dungeon
* Copyright (C) 2012-2015 Oleg Dolya
*
* Shattered Pixel Dungeon
* Copyright (C) 2014-2018 Evan Debenham
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>
*/
package com.shatteredpixel.shatteredpixeldungeon.items.potions.elixirs;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Healing;
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfHealing;
import com.shatteredpixel.shatteredpixeldungeon.items.potions.exotic.PotionOfCleansing;
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet;
public class ElixirOfRestoration extends Elixir {
{
image = ItemSpriteSheet.ELIXIR_RESTO;
}
@Override
public void apply(Hero hero) {
Buff.affect( hero, Healing.class ).setHeal((int)(0.8f*hero.HT + 14), 0.25f, 0);
PotionOfCleansing.cleanse(hero);
}
public static class Recipe extends com.shatteredpixel.shatteredpixeldungeon.items.Recipe.SimpleRecipe {
{
inputs = new Class[]{PotionOfHealing.class, PotionOfCleansing.class};
inQuantity = new int[]{1, 1};
cost = 2;
output = ElixirOfRestoration.class;
outQuantity = 1;
}
}
}

View File

@ -0,0 +1,58 @@
/*
* Pixel Dungeon
* Copyright (C) 2012-2015 Oleg Dolya
*
* Shattered Pixel Dungeon
* Copyright (C) 2014-2018 Evan Debenham
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>
*/
package com.shatteredpixel.shatteredpixeldungeon.items.potions.elixirs;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Barrier;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Healing;
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfHealing;
import com.shatteredpixel.shatteredpixeldungeon.items.potions.exotic.PotionOfShielding;
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet;
public class ElixirOfSurgingVitality extends Elixir {
{
image = ItemSpriteSheet.ELIXIR_SURGE;
}
@Override
public void apply(Hero hero) {
Buff.affect( hero, Healing.class ).setHeal((int)(0.8f*hero.HT + 14), 0.25f, 0);
Buff.affect(hero, Barrier.class).set((int)(0.6f*hero.HT + 10));
}
public static class Recipe extends com.shatteredpixel.shatteredpixeldungeon.items.Recipe.SimpleRecipe {
{
inputs = new Class[]{PotionOfHealing.class, PotionOfShielding.class};
inQuantity = new int[]{1, 1};
cost = 2;
output = ElixirOfSurgingVitality.class;
outQuantity = 1;
}
}
}

View File

@ -519,20 +519,36 @@ public class ItemSpriteSheet {
public static final int ELIXIR_DRAGON = ELIXIRS+0; public static final int ELIXIR_DRAGON = ELIXIRS+0;
public static final int ELIXIR_TOXIC = ELIXIRS+1; public static final int ELIXIR_TOXIC = ELIXIRS+1;
public static final int ELIXIR_EARTH = ELIXIRS+2; public static final int ELIXIR_EARTH = ELIXIRS+2;
public static final int ELIXIR_RESTO = ELIXIRS+5;
public static final int ELIXIR_SURGE = ELIXIRS+6;
public static final int ELIXIR_HONEY = ELIXIRS+7;
static{ static{
assignItemRect(ELIXIR_DRAGON, 10, 14); assignItemRect(ELIXIR_DRAGON, 10, 14);
assignItemRect(ELIXIR_TOXIC, 10, 14); assignItemRect(ELIXIR_TOXIC, 10, 14);
assignItemRect(ELIXIR_EARTH, 10, 14); assignItemRect(ELIXIR_EARTH, 10, 14);
assignItemRect(ELIXIR_RESTO, 10, 14);
assignItemRect(ELIXIR_SURGE, 10, 14);
assignItemRect(ELIXIR_HONEY, 10, 14);
} }
private static final int BREWS = xy(1, 26); //16 slots private static final int BREWS = xy(1, 26); //16 slots
public static final int BREW_WICKED = BREWS+0; public static final int BREW_WICKED = BREWS+0;
public static final int BREW_FRIGID = BREWS+1; public static final int BREW_FRIGID = BREWS+1;
public static final int BREW_FROSTFIRE= BREWS+2; public static final int BREW_FROSTFIRE= BREWS+2;
public static final int BREW_INFERNAL = BREWS+5;
public static final int BREW_BLIZZARD = BREWS+6;
public static final int BREW_SHOCKING = BREWS+7;
static{ static{
assignItemRect(BREW_WICKED, 10, 14); assignItemRect(BREW_WICKED, 10, 14);
assignItemRect(BREW_FRIGID, 10, 14); assignItemRect(BREW_FRIGID, 10, 14);
assignItemRect(BREW_FROSTFIRE, 10, 14); assignItemRect(BREW_FROSTFIRE, 10, 14);
assignItemRect(BREW_INFERNAL, 10, 14);
assignItemRect(BREW_BLIZZARD, 10, 14);
assignItemRect(BREW_SHOCKING, 10, 14);
} }
//16 free slots //16 free slots

View File

@ -553,12 +553,21 @@ items.potions.potionoftoxicgas.desc=Uncorking or shattering this pressurized gla
###brews ###brews
items.potions.brews.blizzardbrew.name=blizzard brew
items.potions.brews.blizzardbrew.desc=TODO
items.potions.brews.frigidbrew.name=frigid brew items.potions.brews.frigidbrew.name=frigid brew
items.potions.brews.frigidbrew.desc=TODO items.potions.brews.frigidbrew.desc=TODO
items.potions.brews.frostfirebrew.name=frostfire brew items.potions.brews.frostfirebrew.name=frostfire brew
items.potions.brews.frostfirebrew.desc=TODO items.potions.brews.frostfirebrew.desc=TODO
items.potions.brews.infernalbrew.name=infernal brew
items.potions.brews.infernalbrew.desc=TODO
items.potions.brews.shockingbrew.name=shocking brew
items.potions.brews.shockingbrew.desc=TODO
items.potions.brews.wickedbrew.name=wicked brew items.potions.brews.wickedbrew.name=wicked brew
items.potions.brews.wickedbrew.desc=TODO items.potions.brews.wickedbrew.desc=TODO
@ -568,12 +577,20 @@ items.potions.brews.wickedbrew.desc=TODO
items.potions.elixirs.elixirofdragonsblood.name=elixir of dragon's blood items.potions.elixirs.elixirofdragonsblood.name=elixir of dragon's blood
items.potions.elixirs.elixirofdragonsblood.desc=TODO items.potions.elixirs.elixirofdragonsblood.desc=TODO
items.potions.elixirs.elixiroftoxicessence.name=elixir of toxic essence
items.potions.elixirs.elixiroftoxicessence.desc=TODO
items.potions.elixirs.elixirofearthenpower.name=elixir of earthen power items.potions.elixirs.elixirofearthenpower.name=elixir of earthen power
items.potions.elixirs.elixirofearthenpower.desc=TODO items.potions.elixirs.elixirofearthenpower.desc=TODO
items.potions.elixirs.elixirofhoneyedhealing.name=elixir of honeyed healing
items.potions.elixirs.elixirofhoneyedhealing.desc=TODO
items.potions.elixirs.elixirofrestoration.name=elixir of restoration
items.potions.elixirs.elixirofrestoration.desc=TODO
items.potions.elixirs.elixirofsurgingvitality.name=elixir of surging vitality
items.potions.elixirs.elixirofsurgingvitality.desc=TODO
items.potions.elixirs.elixiroftoxicessence.name=elixir of toxic essence
items.potions.elixirs.elixiroftoxicessence.desc=TODO