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:
Evan Debenham
2014-11-19 17:04:07 -05:00
parent b73ee347f6
commit b8355f0471
5 changed files with 170 additions and 29 deletions
@@ -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";
@@ -139,6 +139,11 @@ public abstract class Char extends Actor {
if (enemy == Dungeon.hero) {
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 );
}
}