From c2b6518faf5c2eb27b4f7c210c80c040fde3d13b Mon Sep 17 00:00:00 2001 From: Evan Debenham Date: Sun, 19 Aug 2018 19:33:17 -0400 Subject: [PATCH] v0.7.0: basic implementation on 6 more brews/elixirs --- core/src/main/assets/items.png | Bin 17173 -> 17262 bytes .../shatteredpixeldungeon/items/Recipe.java | 12 +++ .../items/potions/Potion.java | 6 ++ .../items/potions/PotionOfHealing.java | 2 +- .../items/potions/brews/BlizzardBrew.java | 52 +++++++++++ .../items/potions/brews/InfernalBrew.java | 52 +++++++++++ .../items/potions/brews/ShockingBrew.java | 70 +++++++++++++++ .../elixirs/ElixirOfHoneyedHealing.java | 81 ++++++++++++++++++ .../potions/elixirs/ElixirOfRestoration.java | 56 ++++++++++++ .../elixirs/ElixirOfSurgingVitality.java | 58 +++++++++++++ .../sprites/ItemSpriteSheet.java | 16 ++++ .../messages/items/items.properties | 23 ++++- 12 files changed, 424 insertions(+), 4 deletions(-) create mode 100644 core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/brews/BlizzardBrew.java create mode 100644 core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/brews/InfernalBrew.java create mode 100644 core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/brews/ShockingBrew.java create mode 100644 core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/elixirs/ElixirOfHoneyedHealing.java create mode 100644 core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/elixirs/ElixirOfRestoration.java create mode 100644 core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/elixirs/ElixirOfSurgingVitality.java diff --git a/core/src/main/assets/items.png b/core/src/main/assets/items.png index 9dff9257be5ff027afcc06cc2ac2e7a670a2722e..c56fab6b233327da1db87820515ebcb60838cec2 100644 GIT binary patch literal 17262 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 handler; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/PotionOfHealing.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/PotionOfHealing.java index 4fb1f519c..46c3fc801 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/PotionOfHealing.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/PotionOfHealing.java @@ -46,7 +46,7 @@ public class PotionOfHealing extends Potion { //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); 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 ) { diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/brews/BlizzardBrew.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/brews/BlizzardBrew.java new file mode 100644 index 000000000..0f8d8a666 --- /dev/null +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/brews/BlizzardBrew.java @@ -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 + */ + +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; + } + + } +} diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/brews/InfernalBrew.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/brews/InfernalBrew.java new file mode 100644 index 000000000..ff37991eb --- /dev/null +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/brews/InfernalBrew.java @@ -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 + */ + +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; + } + + } +} diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/brews/ShockingBrew.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/brews/ShockingBrew.java new file mode 100644 index 000000000..b52b25f2d --- /dev/null +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/brews/ShockingBrew.java @@ -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 + */ + +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; + } + + } +} diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/elixirs/ElixirOfHoneyedHealing.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/elixirs/ElixirOfHoneyedHealing.java new file mode 100644 index 000000000..805a60235 --- /dev/null +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/elixirs/ElixirOfHoneyedHealing.java @@ -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 + */ + +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; + } + + } +} diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/elixirs/ElixirOfRestoration.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/elixirs/ElixirOfRestoration.java new file mode 100644 index 000000000..01ab73df6 --- /dev/null +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/elixirs/ElixirOfRestoration.java @@ -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 + */ + +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; + } + + } +} diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/elixirs/ElixirOfSurgingVitality.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/elixirs/ElixirOfSurgingVitality.java new file mode 100644 index 000000000..d8df50344 --- /dev/null +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/elixirs/ElixirOfSurgingVitality.java @@ -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 + */ + +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; + } + + } + +} 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 940ab8b96..c5aa8922c 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/ItemSpriteSheet.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/ItemSpriteSheet.java @@ -519,20 +519,36 @@ public class ItemSpriteSheet { public static final int ELIXIR_DRAGON = ELIXIRS+0; public static final int ELIXIR_TOXIC = ELIXIRS+1; 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{ assignItemRect(ELIXIR_DRAGON, 10, 14); assignItemRect(ELIXIR_TOXIC, 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 public static final int BREW_WICKED = BREWS+0; public static final int BREW_FRIGID = BREWS+1; 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{ assignItemRect(BREW_WICKED, 10, 14); assignItemRect(BREW_FRIGID, 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 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 90dc0fe14..0f466e0b4 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 @@ -553,12 +553,21 @@ items.potions.potionoftoxicgas.desc=Uncorking or shattering this pressurized gla ###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.desc=TODO items.potions.brews.frostfirebrew.name=frostfire brew 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.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.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 +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