v0.2.3: improved blandfruit: previously harmful fruit now give unique buffs.
Renamed fruit to be more heavily tied to their seeds. New buffs have placeholder graphics, need permanent ones.
This commit is contained in:
parent
b73ee347f6
commit
b8355f0471
|
@ -17,30 +17,30 @@
|
|||
*/
|
||||
package com.shatteredpixel.shatteredpixeldungeon.actors;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashSet;
|
||||
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.*;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.CloakOfShadows;
|
||||
import com.watabou.noosa.audio.Sample;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.Assets;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.ResultDescriptions;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.*;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.HeroSubClass;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Bestiary;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.effects.CellEmitter;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.effects.particles.PoisonParticle;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.CloakOfShadows;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.levels.Level;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.levels.Terrain;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.levels.features.Door;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.sprites.CharSprite;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.utils.GLog;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.utils.Utils;
|
||||
import com.watabou.noosa.audio.Sample;
|
||||
import com.watabou.utils.Bundlable;
|
||||
import com.watabou.utils.Bundle;
|
||||
import com.watabou.utils.Random;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashSet;
|
||||
|
||||
public abstract class Char extends Actor {
|
||||
|
||||
protected static final String TXT_HIT = "%s hit %s";
|
||||
|
@ -140,6 +140,11 @@ public abstract class Char extends Actor {
|
|||
Dungeon.hero.interrupt();
|
||||
}
|
||||
|
||||
if (buff(FireImbue.class) != null)
|
||||
buff(FireImbue.class).proc(enemy);
|
||||
if (buff(EarthImbue.class) != null)
|
||||
buff(EarthImbue.class).proc(enemy);
|
||||
|
||||
enemy.sprite.bloodBurstA( sprite.center(), effectiveDamage );
|
||||
enemy.sprite.flash();
|
||||
|
||||
|
|
|
@ -0,0 +1,35 @@
|
|||
package com.shatteredpixel.shatteredpixeldungeon.actors.buffs;
|
||||
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.Char;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.ui.BuffIndicator;
|
||||
|
||||
import java.util.HashSet;
|
||||
|
||||
/**
|
||||
* Created by debenhame on 19/11/2014.
|
||||
*/
|
||||
public class EarthImbue extends FlavourBuff {
|
||||
|
||||
public static final float DURATION = 20f;
|
||||
|
||||
public void proc(Char enemy){
|
||||
Buff.affect(enemy, Roots.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int icon() {
|
||||
return BuffIndicator.IMMUNITY;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "Imbued with Earth";
|
||||
}
|
||||
|
||||
public static final HashSet<Class<?>> IMMUNITIES = new HashSet<Class<?>>();
|
||||
static {
|
||||
IMMUNITIES.add( Paralysis.class );
|
||||
IMMUNITIES.add( Roots.class );
|
||||
IMMUNITIES.add( Slow.class );
|
||||
}
|
||||
}
|
|
@ -0,0 +1,49 @@
|
|||
package com.shatteredpixel.shatteredpixeldungeon.actors.buffs;
|
||||
|
||||
import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.Char;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.effects.particles.FlameParticle;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.levels.Terrain;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.ui.BuffIndicator;
|
||||
import com.watabou.utils.Random;
|
||||
|
||||
import java.util.HashSet;
|
||||
|
||||
/**
|
||||
* Created by debenhame on 19/11/2014.
|
||||
*/
|
||||
public class FireImbue extends Buff {
|
||||
|
||||
public static final float DURATION = 20f;
|
||||
|
||||
@Override
|
||||
public boolean act() {
|
||||
if (Dungeon.level.map[target.pos] == Terrain.GRASS)
|
||||
Dungeon.level.set(target.pos, Terrain.EMBERS);
|
||||
|
||||
spend(TICK);
|
||||
return true;
|
||||
}
|
||||
|
||||
public void proc(Char enemy){
|
||||
if (Random.Int(3) == 0)
|
||||
Buff.affect( enemy, Burning.class ).reignite( enemy );
|
||||
|
||||
enemy.sprite.emitter().burst( FlameParticle.FACTORY, 2 );
|
||||
}
|
||||
|
||||
@Override
|
||||
public int icon() {
|
||||
return BuffIndicator.IMMUNITY;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "Imbued with Fire";
|
||||
}
|
||||
|
||||
public static final HashSet<Class<?>> IMMUNITIES = new HashSet<Class<?>>();
|
||||
static {
|
||||
IMMUNITIES.add( Burning.class );
|
||||
}
|
||||
}
|
|
@ -0,0 +1,40 @@
|
|||
package com.shatteredpixel.shatteredpixeldungeon.actors.buffs;
|
||||
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.Blob;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.ToxicGas;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.ui.BuffIndicator;
|
||||
|
||||
import java.util.HashSet;
|
||||
|
||||
/**
|
||||
* Created by debenhame on 19/11/2014.
|
||||
*/
|
||||
public class ToxicImbue extends Buff {
|
||||
|
||||
public static final float DURATION = 20f;
|
||||
|
||||
@Override
|
||||
public boolean act() {
|
||||
GameScene.add(Blob.seed(target.pos, 50, ToxicGas.class));
|
||||
|
||||
spend(TICK);
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int icon() {
|
||||
return BuffIndicator.IMMUNITY;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "Imbued with Toxicity";
|
||||
}
|
||||
|
||||
public static final HashSet<Class<?>> IMMUNITIES = new HashSet<Class<?>>();
|
||||
static {
|
||||
IMMUNITIES.add( ToxicGas.class );
|
||||
IMMUNITIES.add( Poison.class );
|
||||
}
|
||||
}
|
|
@ -7,9 +7,12 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Barkskin;
|
|||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Bleeding;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Cripple;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.EarthImbue;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.FireImbue;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Hunger;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Invisibility;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Poison;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.ToxicImbue;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Weakness;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.npcs.Wandmaker;
|
||||
|
@ -125,6 +128,15 @@ public class Blandfruit extends Food {
|
|||
}
|
||||
break;
|
||||
}
|
||||
} else if (potionAttrib instanceof PotionOfLiquidFlame){
|
||||
GLog.i("You feel a great fire burning within you!");
|
||||
Buff.affect(hero, FireImbue.class);
|
||||
} else if (potionAttrib instanceof PotionOfToxicGas) {
|
||||
GLog.i("You are imbued with vile toxic power!");
|
||||
Buff.affect(hero, ToxicImbue.class);
|
||||
} else if (potionAttrib instanceof PotionOfParalyticGas) {
|
||||
GLog.i("You feel the power of the earth coursing through you!");
|
||||
Buff.affect(hero, EarthImbue.class);
|
||||
} else
|
||||
potionAttrib.apply(hero);
|
||||
|
||||
|
@ -182,61 +194,61 @@ public class Blandfruit extends Food {
|
|||
|
||||
if (potionAttrib instanceof PotionOfHealing){
|
||||
|
||||
name = "Healthfruit";
|
||||
name = "Sunfruit";
|
||||
potionGlow = new ItemSprite.Glowing( 0x2EE62E );
|
||||
info += "It looks delicious and hearty, ready to be eaten!";
|
||||
|
||||
} else if (potionAttrib instanceof PotionOfStrength){
|
||||
|
||||
name = "Powerfruit";
|
||||
name = "Rotfruit";
|
||||
potionGlow = new ItemSprite.Glowing( 0xCC0022 );
|
||||
info += "It looks delicious and powerful, ready to be eaten!";
|
||||
|
||||
} else if (potionAttrib instanceof PotionOfParalyticGas){
|
||||
|
||||
name = "Paralyzefruit";
|
||||
name = "Earthfruit";
|
||||
potionGlow = new ItemSprite.Glowing( 0x67583D );
|
||||
info += "It looks firm and volatile, eating this might be unsafe.";
|
||||
info += "It looks delicious and firm, ready to be eaten!";
|
||||
|
||||
} else if (potionAttrib instanceof PotionOfInvisibility){
|
||||
|
||||
name = "Invisifruit";
|
||||
name = "Blindfruit";
|
||||
potionGlow = new ItemSprite.Glowing( 0xE5D273 );
|
||||
info += "It looks delicious and shiny, ready to be eaten!";
|
||||
|
||||
} else if (potionAttrib instanceof PotionOfLiquidFlame){
|
||||
|
||||
name = "Flamefruit";
|
||||
name = "Firefruit";
|
||||
potionGlow = new ItemSprite.Glowing( 0xFF7F00 );
|
||||
info += "It looks spicy and volatile, eating this might be unsafe.";
|
||||
info += "It looks delicious and spicy, ready to be eaten!";
|
||||
|
||||
} else if (potionAttrib instanceof PotionOfFrost){
|
||||
|
||||
name = "Frostfruit";
|
||||
name = "Icefruit";
|
||||
potionGlow = new ItemSprite.Glowing( 0x66B3FF );
|
||||
info += "It looks delicious and refreshing, ready to be eaten!";
|
||||
|
||||
} else if (potionAttrib instanceof PotionOfMindVision){
|
||||
|
||||
name = "Visionfruit";
|
||||
name = "Fadefruit";
|
||||
potionGlow = new ItemSprite.Glowing( 0xB8E6CF );
|
||||
info += "It looks delicious and shadowy, ready to be eaten!";
|
||||
|
||||
} else if (potionAttrib instanceof PotionOfToxicGas){
|
||||
|
||||
name = "Toxicfruit";
|
||||
name = "Sorrowfruit";
|
||||
potionGlow = new ItemSprite.Glowing( 0xA15CE5 );
|
||||
info += "It looks crisp and volatile, eating this might be unsafe.";
|
||||
info += "It looks delicious and crisp, ready to be eaten!";
|
||||
|
||||
} else if (potionAttrib instanceof PotionOfLevitation) {
|
||||
|
||||
name = "Floatfruit";
|
||||
name = "Stormfruit";
|
||||
potionGlow = new ItemSprite.Glowing( 0x1C3A57 );
|
||||
info += "It looks delicious and lightweight, ready to be eaten!";
|
||||
|
||||
} else if (potionAttrib instanceof PotionOfPurity) {
|
||||
|
||||
name = "Purefruit";
|
||||
name = "Dreamfruit";
|
||||
potionGlow = new ItemSprite.Glowing( 0x8E2975 );
|
||||
info += "It looks delicious and clean, ready to be eaten!";
|
||||
|
||||
|
@ -274,25 +286,25 @@ public class Blandfruit extends Food {
|
|||
super.restoreFromBundle(bundle);
|
||||
name = bundle.getString(NAME);
|
||||
|
||||
if (name.equals("Healthfruit"))
|
||||
if (name.equals("Sunfruit"))
|
||||
cook(new Sungrass.Seed());
|
||||
else if (name.equals("Powerfruit"))
|
||||
else if (name.equals("Rotfruit"))
|
||||
cook(new Wandmaker.Rotberry.Seed());
|
||||
else if (name.equals("Paralyzefruit"))
|
||||
else if (name.equals("Earthfruit"))
|
||||
cook(new Earthroot.Seed());
|
||||
else if (name.equals("Invisifruit"))
|
||||
else if (name.equals("Blindfruit"))
|
||||
cook(new Blindweed.Seed());
|
||||
else if (name.equals("Flamefruit"))
|
||||
else if (name.equals("Firefruit"))
|
||||
cook(new Firebloom.Seed());
|
||||
else if (name.equals("Frostfruit"))
|
||||
else if (name.equals("Icefruit"))
|
||||
cook(new Icecap.Seed());
|
||||
else if (name.equals("Visionfruit"))
|
||||
else if (name.equals("Fadefruit"))
|
||||
cook(new Fadeleaf.Seed());
|
||||
else if (name.equals("Toxicfruit"))
|
||||
else if (name.equals("Sorrowfruit"))
|
||||
cook(new Sorrowmoss.Seed());
|
||||
else if (name.equals("Floatfruit"))
|
||||
else if (name.equals("Stormfruit"))
|
||||
cook(new Stormvine.Seed());
|
||||
else if (name.equals("Purefruit"))
|
||||
else if (name.equals("Dreamfruit"))
|
||||
cook(new Dreamfoil.Seed());
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user