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