From 38d25f33bb0b2c88782af757d35f7da4b5b6bf28 Mon Sep 17 00:00:00 2001 From: Evan Debenham Date: Mon, 23 Nov 2015 15:22:29 -0500 Subject: [PATCH] v0.3.2c: added visual effect for soul mark, reduced soul mark duration considerably --- .../actors/buffs/SoulMark.java | 18 +- .../items/wands/Wand.java | 2 +- .../sprites/CharSprite.java | 160 ++++++++++-------- 3 files changed, 94 insertions(+), 86 deletions(-) diff --git a/src/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/SoulMark.java b/src/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/SoulMark.java index 597cc3406..f1a2da8a2 100644 --- a/src/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/SoulMark.java +++ b/src/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/SoulMark.java @@ -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 diff --git a/src/com/shatteredpixel/shatteredpixeldungeon/items/wands/Wand.java b/src/com/shatteredpixel/shatteredpixeldungeon/items/wands/Wand.java index 6b7e8c4c9..e453054c3 100644 --- a/src/com/shatteredpixel/shatteredpixeldungeon/items/wands/Wand.java +++ b/src/com/shatteredpixel/shatteredpixeldungeon/items/wands/Wand.java @@ -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()); } } diff --git a/src/com/shatteredpixel/shatteredpixeldungeon/sprites/CharSprite.java b/src/com/shatteredpixel/shatteredpixeldungeon/sprites/CharSprite.java index 0ccb87c74..26c5e3241 100644 --- a/src/com/shatteredpixel/shatteredpixeldungeon/sprites/CharSprite.java +++ b/src/com/shatteredpixel/shatteredpixeldungeon/sprites/CharSprite.java @@ -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; } }