From 7424c5d5eb8f5abad1a5fb8cca0b8417852e25fb Mon Sep 17 00:00:00 2001 From: Evan Debenham Date: Sat, 10 Nov 2018 21:17:59 -0500 Subject: [PATCH] v0.7.0c: bugfixes: - fixed reach weapons not working for non-heroes - fixed stealth using integers rather than floats - fixed magical sleep decrementing paralysis without incrementing it --- .../shatteredpixeldungeon/actors/Char.java | 2 +- .../actors/buffs/MagicalSleep.java | 14 +++++++------- .../shatteredpixeldungeon/actors/hero/Hero.java | 6 +++--- .../shatteredpixeldungeon/actors/mobs/Mob.java | 4 ++-- .../shatteredpixeldungeon/items/KindOfWeapon.java | 7 ++++--- .../items/artifacts/DriedRose.java | 6 +++--- 6 files changed, 20 insertions(+), 19 deletions(-) diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/Char.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/Char.java index a31c64f1c..77dc0d0c8 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/Char.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/Char.java @@ -491,7 +491,7 @@ public abstract class Char extends Actor { } } - public int stealth() { + public float stealth() { return 0; } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/MagicalSleep.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/MagicalSleep.java index 33809a0d2..ef1362eb9 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/MagicalSleep.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/MagicalSleep.java @@ -35,19 +35,19 @@ public class MagicalSleep extends Buff { @Override public boolean attachTo( Char target ) { if (!target.isImmune(Sleep.class) && super.attachTo( target )) { - - if (target instanceof Hero) + + target.paralysed++; + + if (target instanceof Hero) { if (target.HP == target.HT) { GLog.i(Messages.get(this, "toohealthy")); detach(); - return true; } else { GLog.i(Messages.get(this, "fallasleep")); } - else if (target instanceof Mob) - ((Mob)target).state = ((Mob)target).SLEEPING; - - target.paralysed++; + } else if (target instanceof Mob) { + ((Mob) target).state = ((Mob) target).SLEEPING; + } return true; } else { diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/Hero.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/Hero.java index 5f3589eb4..dd84be280 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/Hero.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/Hero.java @@ -1292,11 +1292,11 @@ public class Hero extends Char { } @Override - public int stealth() { - int stealth = super.stealth(); + public float stealth() { + float stealth = super.stealth(); if (belongings.armor != null){ - stealth = Math.round(belongings.armor.stealthFactor(this, stealth)); + stealth = belongings.armor.stealthFactor(this, stealth); } return stealth; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Mob.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Mob.java index f822716f3..ac1c823cd 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Mob.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Mob.java @@ -691,7 +691,7 @@ public abstract class Mob extends Char { @Override public boolean act( boolean enemyInFOV, boolean justAlerted ) { - if (enemyInFOV && Random.Int( distance( enemy ) + enemy.stealth() + (enemy.flying ? 2 : 0) ) == 0) { + if (enemyInFOV && Random.Float( distance( enemy ) + enemy.stealth() + (enemy.flying ? 2 : 0) ) < 1) { enemySeen = true; @@ -726,7 +726,7 @@ public abstract class Mob extends Char { @Override public boolean act( boolean enemyInFOV, boolean justAlerted ) { - if (enemyInFOV && (justAlerted || Random.Int( distance( enemy ) / 2 + enemy.stealth() ) == 0)) { + if (enemyInFOV && (justAlerted || Random.Float( distance( enemy ) / 2f + enemy.stealth() ) < 1)) { enemySeen = true; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/KindOfWeapon.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/KindOfWeapon.java index 402ad82ad..1e9ccd545 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/KindOfWeapon.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/KindOfWeapon.java @@ -22,9 +22,9 @@ package com.shatteredpixel.shatteredpixeldungeon.items; import com.shatteredpixel.shatteredpixeldungeon.Dungeon; +import com.shatteredpixel.shatteredpixeldungeon.actors.Actor; import com.shatteredpixel.shatteredpixeldungeon.actors.Char; import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero; -import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Mob; import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; import com.shatteredpixel.shatteredpixeldungeon.utils.BArray; import com.shatteredpixel.shatteredpixeldungeon.utils.GLog; @@ -114,8 +114,9 @@ abstract public class KindOfWeapon extends EquipableItem { return false; } else { boolean[] passable = BArray.not(Dungeon.level.solid, null); - for (Mob m : Dungeon.level.mobs) - passable[m.pos] = false; + for (Char ch : Actor.chars()) { + if (ch != owner) passable[ch.pos] = false; + } PathFinder.buildDistanceMap(target, passable, reachFactor(owner)); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/artifacts/DriedRose.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/artifacts/DriedRose.java index 778aad852..7112ccc22 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/artifacts/DriedRose.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/artifacts/DriedRose.java @@ -571,11 +571,11 @@ public class DriedRose extends Artifact { } @Override - public int stealth() { - int stealth = super.stealth(); + public float stealth() { + float stealth = super.stealth(); if (rose != null && rose.armor != null){ - stealth = Math.round(rose.armor.stealthFactor(this, stealth)); + stealth = rose.armor.stealthFactor(this, stealth); } return stealth;