v0.3.2c: added visual effect for soul mark, reduced soul mark duration considerably
This commit is contained in:
parent
0ef4ad71fc
commit
38d25f33bb
|
@ -20,13 +20,12 @@
|
|||
*/
|
||||
package com.shatteredpixel.shatteredpixeldungeon.actors.buffs;
|
||||
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.Char;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.effects.particles.ShadowParticle;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.sprites.CharSprite;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.ui.BuffIndicator;
|
||||
|
||||
public class SoulMark extends FlavourBuff {
|
||||
|
||||
public static final float DURATION = 50f;
|
||||
public static final float DURATION = 10f;
|
||||
|
||||
{
|
||||
type = buffType.NEGATIVE;
|
||||
|
@ -38,17 +37,14 @@ public class SoulMark extends FlavourBuff {
|
|||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "Soul Marked";
|
||||
public void fx(boolean on) {
|
||||
if (on) target.sprite.add(CharSprite.State.MARKED);
|
||||
else target.sprite.remove(CharSprite.State.MARKED);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean attachTo(Char target) {
|
||||
if (super.attachTo(target) && target.sprite != null){
|
||||
target.sprite.emitter().burst(ShadowParticle.UP, 10);
|
||||
return true;
|
||||
} else
|
||||
return false;
|
||||
public String toString() {
|
||||
return "Soul Marked";
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -135,7 +135,7 @@ public abstract class Wand extends Item {
|
|||
if (target != Dungeon.hero &&
|
||||
Dungeon.hero.subClass == HeroSubClass.WARLOCK &&
|
||||
Random.Float() < .15f + (level()*chargesUsed*0.03f)){
|
||||
SoulMark.prolong(target, SoulMark.class, SoulMark.DURATION);
|
||||
SoulMark.prolong(target, SoulMark.class, SoulMark.DURATION + level());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
package com.shatteredpixel.shatteredpixeldungeon.sprites;
|
||||
|
||||
import com.shatteredpixel.shatteredpixeldungeon.effects.DarkBlock;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.effects.particles.ShadowParticle;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.effects.particles.SnowParticle;
|
||||
import com.watabou.noosa.Game;
|
||||
import com.watabou.noosa.MovieClip;
|
||||
|
@ -60,7 +61,7 @@ public class CharSprite extends MovieClip implements Tweener.Listener, MovieClip
|
|||
private static final float FLASH_INTERVAL = 0.05f;
|
||||
|
||||
public enum State {
|
||||
BURNING, LEVITATING, INVISIBLE, PARALYSED, FROZEN, ILLUMINATED, CHILLED, DARKENED
|
||||
BURNING, LEVITATING, INVISIBLE, PARALYSED, FROZEN, ILLUMINATED, CHILLED, DARKENED, MARKED
|
||||
}
|
||||
|
||||
protected Animation idle;
|
||||
|
@ -76,6 +77,7 @@ public class CharSprite extends MovieClip implements Tweener.Listener, MovieClip
|
|||
|
||||
protected Emitter burning;
|
||||
protected Emitter chilled;
|
||||
protected Emitter marked;
|
||||
protected Emitter levitation;
|
||||
|
||||
protected IceBlock iceBlock;
|
||||
|
@ -259,84 +261,94 @@ public class CharSprite extends MovieClip implements Tweener.Listener, MovieClip
|
|||
|
||||
public void add( State state ) {
|
||||
switch (state) {
|
||||
case BURNING:
|
||||
burning = emitter();
|
||||
burning.pour( FlameParticle.FACTORY, 0.06f );
|
||||
if (visible) {
|
||||
Sample.INSTANCE.play( Assets.SND_BURNING );
|
||||
}
|
||||
break;
|
||||
case LEVITATING:
|
||||
levitation = emitter();
|
||||
levitation.pour( Speck.factory( Speck.JET ), 0.02f );
|
||||
break;
|
||||
case INVISIBLE:
|
||||
PotionOfInvisibility.melt( ch );
|
||||
break;
|
||||
case PARALYSED:
|
||||
paused = true;
|
||||
break;
|
||||
case FROZEN:
|
||||
iceBlock = IceBlock.freeze( this );
|
||||
paused = true;
|
||||
break;
|
||||
case ILLUMINATED:
|
||||
GameScene.effect( halo = new TorchHalo( this ) );
|
||||
break;
|
||||
case CHILLED:
|
||||
chilled = emitter();
|
||||
chilled.pour(SnowParticle.FACTORY, 0.1f);
|
||||
break;
|
||||
case DARKENED:
|
||||
darkBlock = DarkBlock.darken( this );
|
||||
break;
|
||||
case BURNING:
|
||||
burning = emitter();
|
||||
burning.pour( FlameParticle.FACTORY, 0.06f );
|
||||
if (visible) {
|
||||
Sample.INSTANCE.play( Assets.SND_BURNING );
|
||||
}
|
||||
break;
|
||||
case LEVITATING:
|
||||
levitation = emitter();
|
||||
levitation.pour( Speck.factory( Speck.JET ), 0.02f );
|
||||
break;
|
||||
case INVISIBLE:
|
||||
PotionOfInvisibility.melt( ch );
|
||||
break;
|
||||
case PARALYSED:
|
||||
paused = true;
|
||||
break;
|
||||
case FROZEN:
|
||||
iceBlock = IceBlock.freeze( this );
|
||||
paused = true;
|
||||
break;
|
||||
case ILLUMINATED:
|
||||
GameScene.effect( halo = new TorchHalo( this ) );
|
||||
break;
|
||||
case CHILLED:
|
||||
chilled = emitter();
|
||||
chilled.pour(SnowParticle.FACTORY, 0.1f);
|
||||
break;
|
||||
case DARKENED:
|
||||
darkBlock = DarkBlock.darken( this );
|
||||
break;
|
||||
case MARKED:
|
||||
marked = emitter();
|
||||
marked.pour(ShadowParticle.UP, 0.1f);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
public void remove( State state ) {
|
||||
switch (state) {
|
||||
case BURNING:
|
||||
if (burning != null) {
|
||||
burning.on = false;
|
||||
burning = null;
|
||||
}
|
||||
break;
|
||||
case LEVITATING:
|
||||
if (levitation != null) {
|
||||
levitation.on = false;
|
||||
levitation = null;
|
||||
}
|
||||
break;
|
||||
case INVISIBLE:
|
||||
alpha( 1f );
|
||||
break;
|
||||
case PARALYSED:
|
||||
paused = false;
|
||||
break;
|
||||
case FROZEN:
|
||||
if (iceBlock != null) {
|
||||
iceBlock.melt();
|
||||
iceBlock = null;
|
||||
}
|
||||
paused = false;
|
||||
break;
|
||||
case ILLUMINATED:
|
||||
if (halo != null) {
|
||||
halo.putOut();
|
||||
}
|
||||
break;
|
||||
case CHILLED:
|
||||
if (chilled != null){
|
||||
chilled.on = false;
|
||||
chilled = null;
|
||||
}
|
||||
break;
|
||||
case DARKENED:
|
||||
if (darkBlock != null) {
|
||||
darkBlock.lighten();
|
||||
darkBlock = null;
|
||||
}
|
||||
break;
|
||||
case BURNING:
|
||||
if (burning != null) {
|
||||
burning.on = false;
|
||||
burning = null;
|
||||
}
|
||||
break;
|
||||
case LEVITATING:
|
||||
if (levitation != null) {
|
||||
levitation.on = false;
|
||||
levitation = null;
|
||||
}
|
||||
break;
|
||||
case INVISIBLE:
|
||||
alpha( 1f );
|
||||
break;
|
||||
case PARALYSED:
|
||||
paused = false;
|
||||
break;
|
||||
case FROZEN:
|
||||
if (iceBlock != null) {
|
||||
iceBlock.melt();
|
||||
iceBlock = null;
|
||||
}
|
||||
paused = false;
|
||||
break;
|
||||
case ILLUMINATED:
|
||||
if (halo != null) {
|
||||
halo.putOut();
|
||||
}
|
||||
break;
|
||||
case CHILLED:
|
||||
if (chilled != null){
|
||||
chilled.on = false;
|
||||
chilled = null;
|
||||
}
|
||||
break;
|
||||
case DARKENED:
|
||||
if (darkBlock != null) {
|
||||
darkBlock.lighten();
|
||||
darkBlock = null;
|
||||
}
|
||||
break;
|
||||
case MARKED:
|
||||
if (marked != null){
|
||||
marked.on = false;
|
||||
marked = null;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user