v0.7.0: added 3 initial elixirs

This commit is contained in:
Evan Debenham 2018-08-17 20:32:05 -04:00
parent 4688324c6e
commit 0184c86aad
12 changed files with 270 additions and 7 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 16 KiB

View File

@ -32,6 +32,7 @@ public class EarthImbue extends FlavourBuff {
{
type = buffType.POSITIVE;
announced = true;
}
public static final float DURATION = 30f;

View File

@ -36,6 +36,7 @@ public class FireImbue extends Buff {
{
type = buffType.POSITIVE;
announced = true;
}
public static final float DURATION = 30f;

View File

@ -33,6 +33,7 @@ public class ToxicImbue extends Buff {
{
type = buffType.POSITIVE;
announced = true;
}
public static final float DURATION = 30f;

View File

@ -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[]{

View File

@ -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) {

View File

@ -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 <http://www.gnu.org/licenses/>
*/
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;
}
}

View File

@ -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 <http://www.gnu.org/licenses/>
*/
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;
}
}
}

View File

@ -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 <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.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;
}
}
}

View File

@ -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 <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.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;
}
}
}

View File

@ -515,7 +515,17 @@ public class ItemSpriteSheet {
assignItemRect(i, 10, 10);
}
private static final int FOOD = xy(1, 25); //16 slots
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, 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){

View File

@ -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