Merge remote-tracking branch 'origin/master'

This commit is contained in:
Evan Debenham 2014-08-15 09:11:47 -04:00
commit ef59fd8536
8 changed files with 38 additions and 15 deletions

View File

@ -367,7 +367,7 @@ public abstract class Char extends Actor {
sprite.showStatus( CharSprite.NEGATIVE, "bleeding" ); sprite.showStatus( CharSprite.NEGATIVE, "bleeding" );
} else if (buff instanceof Sleep) { } else if (buff instanceof Sleep || buff instanceof MagicalSleep) {
sprite.idle(); sprite.idle();
} }

View File

@ -35,10 +35,18 @@ public class Drowsy extends Buff {
@Override @Override
public boolean act(){ public boolean act(){
if (placed) { if (placed) {
Buff.affect(target, MagicalSleep.class);
if (target instanceof Hero) if (target instanceof Hero)
GLog.i("You fall into a deep magical sleep."); if (target.HP == target.HT) {
GLog.i("You are too healthy, and resist the urge to sleep.");
detach(); detach();
} else {
GLog.i("You fall into a deep magical sleep.");
Buff.affect(target, MagicalSleep.class);
detach();
}
else
Buff.affect(target, MagicalSleep.class);
return true; return true;
} else { } else {
placed = true; placed = true;

View File

@ -21,6 +21,7 @@ import java.util.ArrayList;
import java.util.HashSet; import java.util.HashSet;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Drowsy; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Drowsy;
import com.shatteredpixel.shatteredpixeldungeon.effects.CellEmitter;
import com.watabou.noosa.Camera; import com.watabou.noosa.Camera;
import com.watabou.noosa.Game; import com.watabou.noosa.Game;
import com.watabou.noosa.audio.Sample; import com.watabou.noosa.audio.Sample;
@ -823,7 +824,7 @@ public class Hero extends Char {
restoreHealth = false; restoreHealth = false;
if (this.buff(Drowsy.class) != null){ if (this.buff(Drowsy.class) != null){
Buff.detach(this, Drowsy.class); Buff.detach(this, Drowsy.class);
GLog.i("The pain helps you resist the urge to sleep."); GLog.w("The pain helps you resist the urge to sleep.");
} }
super.damage( dmg, src ); super.damage( dmg, src );
@ -1101,6 +1102,7 @@ public class Hero extends Char {
this.HP = HT; this.HP = HT;
//TODO: add sparkle effect //TODO: add sparkle effect
new Flare(8, 32).color(0xFFFF66, true).show(sprite, 2f); new Flare(8, 32).color(0xFFFF66, true).show(sprite, 2f);
CellEmitter.get(this.pos).start(Speck.factory(Speck.LIGHT), 0.2f, 3);
ankh.detach(belongings.backpack); ankh.detach(belongings.backpack);

View File

@ -294,10 +294,6 @@ public abstract class Mob extends Char {
} else if (buff instanceof Terror) { } else if (buff instanceof Terror) {
state = State.FLEEING; state = State.FLEEING;
} else if (buff instanceof Sleep || buff instanceof MagicalSleep) { } else if (buff instanceof Sleep || buff instanceof MagicalSleep) {
if (sprite != null) {
//new Flare( 4, 32 ).color( 0x44ffff, true ).show( sprite, 2f ) ;
this.sprite().showSleep();
}
state = State.SLEEPING; state = State.SLEEPING;
this.sprite().showSleep(); this.sprite().showSleep();
postpone( Sleep.SWS ); postpone( Sleep.SWS );

View File

@ -19,6 +19,8 @@ package com.shatteredpixel.shatteredpixeldungeon.items;
import com.shatteredpixel.shatteredpixeldungeon.Assets; import com.shatteredpixel.shatteredpixeldungeon.Assets;
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero; import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
import com.shatteredpixel.shatteredpixeldungeon.effects.CellEmitter;
import com.shatteredpixel.shatteredpixeldungeon.effects.Speck;
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet;
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSprite.Glowing; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSprite.Glowing;
import com.shatteredpixel.shatteredpixeldungeon.utils.GLog; import com.shatteredpixel.shatteredpixeldungeon.utils.GLog;
@ -82,6 +84,7 @@ public class Ankh extends Item {
//TODO: add sparkle effect //TODO: add sparkle effect
Sample.INSTANCE.play( Assets.SND_DRINK ); Sample.INSTANCE.play( Assets.SND_DRINK );
CellEmitter.get(hero.pos).start(Speck.factory(Speck.LIGHT), 0.2f, 3);
hero.sprite.operate( hero.pos ); hero.sprite.operate( hero.pos );
} }
} else { } else {

View File

@ -128,7 +128,7 @@ public class Blandfruit extends Food {
potionAttrib instanceof PotionOfParalyticGas || potionAttrib instanceof PotionOfParalyticGas ||
potionAttrib instanceof PotionOfFrost){ potionAttrib instanceof PotionOfFrost){
potionAttrib.execute(hero, action); potionAttrib.execute(hero, action);
detach( hero.belongings.backpack ); //detaches in Potion.cast, this is an awkward workaround due to throwing being on a different thread.
} else { } else {
super.execute(hero, action); super.execute(hero, action);
} }
@ -154,6 +154,7 @@ public class Blandfruit extends Food {
try { try {
potionAttrib = (Potion)plant.newInstance(); potionAttrib = (Potion)plant.newInstance();
potionAttrib.ownedByFruit = true;
} catch (Exception e) { } catch (Exception e) {
return null; return null;
} }

View File

@ -87,6 +87,8 @@ public class Potion extends Item {
private String color; private String color;
public boolean ownedByFruit = false;
{ {
stackable = true; stackable = true;
defaultAction = AC_DRINK; defaultAction = AC_DRINK;
@ -218,20 +220,30 @@ public class Potion extends Item {
splash( cell ); splash( cell );
} }
@Override
public void cast( final Hero user, int dst ) {
super.cast(user, dst);
//if this potion is owned by a fruit, finds it and detaches it.
//TODO: add remove code here
}
public boolean isKnown() { public boolean isKnown() {
return handler.isKnown( this ); return handler.isKnown( this );
} }
public void setKnown() { public void setKnown() {
if (!ownedByFruit) {
if (!isKnown()) { if (!isKnown()) {
handler.know( this ); handler.know(this);
} }
Badges.validateAllPotionsIdentified(); Badges.validateAllPotionsIdentified();
} }
}
@Override @Override
public Item identify() { public Item identify() {
setKnown(); setKnown();
return this; return this;
} }

View File

@ -45,6 +45,7 @@ public class ScrollOfLullaby extends Scroll {
for (Mob mob : Dungeon.level.mobs.toArray( new Mob[0] )) { for (Mob mob : Dungeon.level.mobs.toArray( new Mob[0] )) {
if (Level.fieldOfView[mob.pos]) { if (Level.fieldOfView[mob.pos]) {
Buff.affect( mob, Drowsy.class ); Buff.affect( mob, Drowsy.class );
mob.sprite.centerEmitter().start( Speck.factory( Speck.NOTE ), 0.3f, 5 );
} }
} }