diff --git a/core/src/main/assets/items.png b/core/src/main/assets/items.png
index 35ac6d847..71d4d1f91 100644
Binary files a/core/src/main/assets/items.png and b/core/src/main/assets/items.png differ
diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/EarthImbue.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/EarthImbue.java
index c77431fe7..dd885fc0c 100644
--- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/EarthImbue.java
+++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/EarthImbue.java
@@ -32,6 +32,7 @@ public class EarthImbue extends FlavourBuff {
{
type = buffType.POSITIVE;
+ announced = true;
}
public static final float DURATION = 30f;
diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/FireImbue.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/FireImbue.java
index 6fce93d41..fe44ce6ef 100644
--- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/FireImbue.java
+++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/FireImbue.java
@@ -36,6 +36,7 @@ public class FireImbue extends Buff {
{
type = buffType.POSITIVE;
+ announced = true;
}
public static final float DURATION = 30f;
diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/ToxicImbue.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/ToxicImbue.java
index 870e18e8a..93ac05e29 100644
--- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/ToxicImbue.java
+++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/ToxicImbue.java
@@ -33,6 +33,7 @@ public class ToxicImbue extends Buff {
{
type = buffType.POSITIVE;
+ announced = true;
}
public static final float DURATION = 30f;
diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/Recipe.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/Recipe.java
index ffd2f33f6..39232f5ec 100644
--- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/Recipe.java
+++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/Recipe.java
@@ -25,6 +25,9 @@ import com.shatteredpixel.shatteredpixeldungeon.ShatteredPixelDungeon;
import com.shatteredpixel.shatteredpixeldungeon.items.bombs.Bomb;
import com.shatteredpixel.shatteredpixeldungeon.items.food.Blandfruit;
import com.shatteredpixel.shatteredpixeldungeon.items.potions.Potion;
+import com.shatteredpixel.shatteredpixeldungeon.items.potions.elixirs.ElixirOfDragonsBlood;
+import com.shatteredpixel.shatteredpixeldungeon.items.potions.elixirs.ElixirOfEarthenPower;
+import com.shatteredpixel.shatteredpixeldungeon.items.potions.elixirs.ElixirOfToxicEssence;
import com.shatteredpixel.shatteredpixeldungeon.items.potions.exotic.ExoticPotion;
import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.Scroll;
import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.exotic.ExoticScroll;
@@ -121,7 +124,10 @@ public abstract class Recipe {
private static Recipe[] twoIngredientRecipes = new Recipe[]{
new Blandfruit.CookFruit(),
- new TippedDart.TipDart()
+ new TippedDart.TipDart(),
+ new ElixirOfDragonsBlood.Recipe(),
+ new ElixirOfEarthenPower.Recipe(),
+ new ElixirOfToxicEssence.Recipe()
};
private static Recipe[] threeIngredientRecipes = new Recipe[]{
diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/Potion.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/Potion.java
index c7eff5e06..352a25045 100644
--- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/Potion.java
+++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/Potion.java
@@ -380,13 +380,17 @@ public class Potion extends Item {
return handler.known().size() == potions.length;
}
+ protected int splashColor(){
+ return ItemSprite.pick( image, 8, 10 );
+ }
+
protected void splash( int cell ) {
Fire fire = (Fire)Dungeon.level.blobs.get( Fire.class );
if (fire != null)
fire.clear( cell );
- final int color = ItemSprite.pick( image, 8, 10 );
+ final int color = splashColor();
Char ch = Actor.findChar(cell);
if (ch != null) {
diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/elixirs/Elixir.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/elixirs/Elixir.java
new file mode 100644
index 000000000..0f869e145
--- /dev/null
+++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/elixirs/Elixir.java
@@ -0,0 +1,35 @@
+/*
+ * 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
+ */
+
+package com.shatteredpixel.shatteredpixeldungeon.items.potions.elixirs;
+
+import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
+import com.shatteredpixel.shatteredpixeldungeon.items.potions.Potion;
+
+public abstract class Elixir extends Potion {
+
+ public abstract void apply( Hero hero );
+
+ @Override
+ public boolean isKnown() {
+ return true;
+ }
+}
diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/elixirs/ElixirOfDragonsBlood.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/elixirs/ElixirOfDragonsBlood.java
new file mode 100644
index 000000000..8e6aaa15d
--- /dev/null
+++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/elixirs/ElixirOfDragonsBlood.java
@@ -0,0 +1,66 @@
+/*
+ * 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
+ */
+
+package com.shatteredpixel.shatteredpixeldungeon.items.potions.elixirs;
+
+import com.shatteredpixel.shatteredpixeldungeon.Assets;
+import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff;
+import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.FireImbue;
+import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
+import com.shatteredpixel.shatteredpixeldungeon.effects.particles.FlameParticle;
+import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfLiquidFlame;
+import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfPurity;
+import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet;
+import com.watabou.noosa.audio.Sample;
+
+public class ElixirOfDragonsBlood extends Elixir {
+
+ {
+ //TODO finish visuals
+ image = ItemSpriteSheet.ELIXIR_DRAGON;
+ }
+
+ @Override
+ public void apply(Hero hero) {
+ Buff.affect(hero, FireImbue.class).set(FireImbue.DURATION);
+ Sample.INSTANCE.play( Assets.SND_BURNING );
+ hero.sprite.emitter().burst(FlameParticle.FACTORY, 10);
+ }
+
+ @Override
+ protected int splashColor() {
+ return 0xFFFF002A;
+ }
+
+ public static class Recipe extends com.shatteredpixel.shatteredpixeldungeon.items.Recipe.SimpleRecipe {
+
+ {
+ inputs = new Class[]{PotionOfLiquidFlame.class, PotionOfPurity.class};
+ inQuantity = new int[]{1, 1};
+
+ cost = 2;
+
+ output = ElixirOfDragonsBlood.class;
+ outQuantity = 1;
+ }
+
+ }
+}
diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/elixirs/ElixirOfEarthenPower.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/elixirs/ElixirOfEarthenPower.java
new file mode 100644
index 000000000..346319c78
--- /dev/null
+++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/elixirs/ElixirOfEarthenPower.java
@@ -0,0 +1,63 @@
+/*
+ * 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
+ */
+
+package com.shatteredpixel.shatteredpixeldungeon.items.potions.elixirs;
+
+import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff;
+import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.EarthImbue;
+import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
+import com.shatteredpixel.shatteredpixeldungeon.effects.particles.EarthParticle;
+import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfHaste;
+import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfParalyticGas;
+import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet;
+
+public class ElixirOfEarthenPower extends Elixir {
+
+ {
+ //TODO finish visuals
+ image = ItemSpriteSheet.ELIXIR_EARTH;
+ }
+
+ @Override
+ public void apply(Hero hero) {
+ Buff.affect(hero, EarthImbue.class, EarthImbue.DURATION);
+ hero.sprite.emitter().burst(EarthParticle.FACTORY, 5);
+ }
+
+ @Override
+ protected int splashColor() {
+ return 0xFF603913;
+ }
+
+ public static class Recipe extends com.shatteredpixel.shatteredpixeldungeon.items.Recipe.SimpleRecipe {
+
+ {
+ inputs = new Class[]{PotionOfParalyticGas.class, PotionOfHaste.class};
+ inQuantity = new int[]{1, 1};
+
+ cost = 2;
+
+ output = ElixirOfEarthenPower.class;
+ outQuantity = 1;
+ }
+
+ }
+}
diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/elixirs/ElixirOfToxicEssence.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/elixirs/ElixirOfToxicEssence.java
new file mode 100644
index 000000000..ca7e3e602
--- /dev/null
+++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/elixirs/ElixirOfToxicEssence.java
@@ -0,0 +1,64 @@
+/*
+ * 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
+ */
+
+package com.shatteredpixel.shatteredpixeldungeon.items.potions.elixirs;
+
+import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff;
+import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.ToxicImbue;
+import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
+import com.shatteredpixel.shatteredpixeldungeon.effects.particles.PoisonParticle;
+import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfPurity;
+import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfToxicGas;
+import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet;
+
+public class ElixirOfToxicEssence extends Elixir {
+
+ {
+ //TODO finish visuals
+ image = ItemSpriteSheet.ELIXIR_TOXIC;
+ }
+
+ @Override
+ public void apply(Hero hero) {
+ Buff.affect(hero, ToxicImbue.class).set(ToxicImbue.DURATION);
+ hero.sprite.emitter().burst(PoisonParticle.SPLASH, 10);
+ }
+
+ @Override
+ protected int splashColor() {
+ return 0xFF00B34A;
+ }
+
+ public static class Recipe extends com.shatteredpixel.shatteredpixeldungeon.items.Recipe.SimpleRecipe {
+
+ {
+ inputs = new Class[]{PotionOfToxicGas.class, PotionOfPurity.class};
+ inQuantity = new int[]{1, 1};
+
+ cost = 2;
+
+ output = ElixirOfToxicEssence.class;
+ outQuantity = 1;
+ }
+
+ }
+
+}
diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/ItemSpriteSheet.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/ItemSpriteSheet.java
index 0a8793145..1554a8068 100644
--- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/ItemSpriteSheet.java
+++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/ItemSpriteSheet.java
@@ -514,8 +514,18 @@ public class ItemSpriteSheet {
for (int i = SEEDS; i < SEEDS+16; i++)
assignItemRect(i, 10, 10);
}
+
+ private static final int ELIXIRS = xy(1, 25); //16 slots
+ public static final int ELIXIR_DRAGON = ELIXIRS+0;
+ public static final int ELIXIR_TOXIC = ELIXIRS+1;
+ public static final int ELIXIR_EARTH = ELIXIRS+2;
+ static{
+ assignItemRect(ELIXIR_DRAGON, 10, 14);
+ assignItemRect(ELIXIR_TOXIC, 10, 14);
+ assignItemRect(ELIXIR_EARTH, 10, 14);
+ }
- private static final int FOOD = xy(1, 25); //16 slots
+ private static final int FOOD = xy(1, 28); //16 slots
public static final int MEAT = FOOD+0;
public static final int STEAK = FOOD+1;
public static final int OVERPRICED = FOOD+2;
@@ -539,7 +549,7 @@ public class ItemSpriteSheet {
assignItemRect(BLAND_CHUNKS,14, 6);
}
- private static final int QUEST = xy(1, 26); //32 slots
+ private static final int QUEST = xy(1, 29); //32 slots
public static final int SKULL = QUEST+0;
public static final int DUST = QUEST+1;
public static final int CANDLE = QUEST+2;
@@ -555,10 +565,9 @@ public class ItemSpriteSheet {
assignItemRect(PICKAXE, 14, 14);
assignItemRect(ORE, 15, 15);
assignItemRect(TOKEN, 12, 12);
-
}
- private static final int BAGS = xy(1, 28); //16 slots
+ private static final int BAGS = xy(1, 31); //16 slots
public static final int VIAL = BAGS+0;
public static final int POUCH = BAGS+1;
public static final int HOLDER = BAGS+2;
@@ -572,7 +581,7 @@ public class ItemSpriteSheet {
assignItemRect(HOLSTER, 15, 16);
}
- //64 free slots
+ //16 free slots
private static void assignItemRect( int item, int width, int height){
diff --git a/core/src/main/resources/com/shatteredpixel/shatteredpixeldungeon/messages/items/items.properties b/core/src/main/resources/com/shatteredpixel/shatteredpixeldungeon/messages/items/items.properties
index 4065e4dcc..fe2d289c6 100644
--- a/core/src/main/resources/com/shatteredpixel/shatteredpixeldungeon/messages/items/items.properties
+++ b/core/src/main/resources/com/shatteredpixel/shatteredpixeldungeon/messages/items/items.properties
@@ -546,6 +546,19 @@ items.potions.potionoftoxicgas.desc=Uncorking or shattering this pressurized gla
+###elixirs
+items.potions.elixirs.elixirofdragonsblood.name=elixir of dragon's blood
+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.desc=TODO
+
+
+
+
###exotic potions
items.potions.exotic.exoticpotion.turquoise=exotic turquoise potion
items.potions.exotic.exoticpotion.crimson=exotic crimson potion