Merge remote-tracking branch 'origin/master'
This commit is contained in:
commit
ef59fd8536
|
@ -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();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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);
|
||||||
|
|
||||||
|
|
|
@ -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 );
|
||||||
|
|
|
@ -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 {
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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 );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user