From 74f6df7b6bc8174335cf258e58ff2b038b2bd96d Mon Sep 17 00:00:00 2001 From: Evan Debenham Date: Wed, 14 Oct 2020 15:20:02 -0400 Subject: [PATCH] v0.9.0b: adjusted visual paralysis logic to prevent freeze+para bugs --- .../shatteredpixeldungeon/actors/buffs/Frost.java | 9 +++++++-- .../shatteredpixeldungeon/actors/buffs/Paralysis.java | 4 ++-- .../shatteredpixeldungeon/sprites/CharSprite.java | 5 ++--- 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Frost.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Frost.java index 7ea661af1..7dda9735f 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Frost.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Frost.java @@ -125,8 +125,13 @@ public class Frost extends FlavourBuff { @Override public void fx(boolean on) { - if (on) target.sprite.add(CharSprite.State.FROZEN); - else target.sprite.remove(CharSprite.State.FROZEN); + if (on) { + target.sprite.add(CharSprite.State.FROZEN); + target.sprite.add(CharSprite.State.PARALYSED); + } else { + target.sprite.remove(CharSprite.State.FROZEN); + if (target.paralysed <= 1) target.sprite.remove(CharSprite.State.FROZEN); + } } @Override diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Paralysis.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Paralysis.java index 557f4b6f9..8b4f0a364 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Paralysis.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Paralysis.java @@ -82,8 +82,8 @@ public class Paralysis extends FlavourBuff { @Override public void fx(boolean on) { - if (on) target.sprite.add(CharSprite.State.PARALYSED); - else target.sprite.remove(CharSprite.State.PARALYSED); + if (on) target.sprite.add(CharSprite.State.PARALYSED); + else if (target.paralysed <= 1) target.sprite.remove(CharSprite.State.PARALYSED); } @Override diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/CharSprite.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/CharSprite.java index 92f59aecb..d13f6e309 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/CharSprite.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/CharSprite.java @@ -82,6 +82,7 @@ public class CharSprite extends MovieClip implements Tweener.Listener, MovieClip public enum State { BURNING, LEVITATING, INVISIBLE, PARALYSED, FROZEN, ILLUMINATED, CHILLED, DARKENED, MARKED, HEALING, SHIELDED } + private int stunStates = 0; protected Animation idle; protected Animation run; @@ -369,7 +370,6 @@ public class CharSprite extends MovieClip implements Tweener.Listener, MovieClip break; case FROZEN: iceBlock = IceBlock.freeze( this ); - paused = true; break; case ILLUMINATED: GameScene.effect( light = new TorchHalo( this ) ); @@ -417,14 +417,13 @@ public class CharSprite extends MovieClip implements Tweener.Listener, MovieClip alpha( 1f ); break; case PARALYSED: - paused = false; + if (iceBlock != null) paused = false; break; case FROZEN: if (iceBlock != null) { iceBlock.melt(); iceBlock = null; } - paused = false; break; case ILLUMINATED: if (light != null) {