From 5a1d6e5d91ba249c53895592bfb6038afc4a0898 Mon Sep 17 00:00:00 2001 From: Evan Debenham Date: Thu, 14 Sep 2023 10:51:40 -0400 Subject: [PATCH] v2.2.0: traps now use depth if they're levelgen, scaling depth otherwise --- .../shatteredpixeldungeon/levels/traps/ConfusionTrap.java | 3 +-- .../shatteredpixeldungeon/levels/traps/CorrosionTrap.java | 5 ++--- .../levels/traps/DisintegrationTrap.java | 2 +- .../shatteredpixeldungeon/levels/traps/FlashingTrap.java | 2 +- .../shatteredpixeldungeon/levels/traps/GeyserTrap.java | 4 ++-- .../shatteredpixeldungeon/levels/traps/GrippingTrap.java | 3 +-- .../shatteredpixeldungeon/levels/traps/GuardianTrap.java | 2 +- .../shatteredpixeldungeon/levels/traps/PoisonDartTrap.java | 2 +- .../shatteredpixeldungeon/levels/traps/RockfallTrap.java | 2 +- .../shatteredpixeldungeon/levels/traps/ToxicTrap.java | 3 +-- .../shatteredpixeldungeon/levels/traps/Trap.java | 7 +++++++ 11 files changed, 19 insertions(+), 16 deletions(-) diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/ConfusionTrap.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/ConfusionTrap.java index ed88d3dc3..5533eb4c1 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/ConfusionTrap.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/ConfusionTrap.java @@ -22,7 +22,6 @@ package com.shatteredpixel.shatteredpixeldungeon.levels.traps; import com.shatteredpixel.shatteredpixeldungeon.Assets; -import com.shatteredpixel.shatteredpixeldungeon.Dungeon; import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.Blob; import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.ConfusionGas; import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene; @@ -38,7 +37,7 @@ public class ConfusionTrap extends Trap { @Override public void activate() { - GameScene.add(Blob.seed(pos, 300 + 20 * Dungeon.depth, ConfusionGas.class)); + GameScene.add(Blob.seed(pos, 300 + 20 * scalingDepth(), ConfusionGas.class)); Sample.INSTANCE.play(Assets.Sounds.GAS); } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/CorrosionTrap.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/CorrosionTrap.java index a58188c7a..7a0436bf5 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/CorrosionTrap.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/CorrosionTrap.java @@ -22,7 +22,6 @@ package com.shatteredpixel.shatteredpixeldungeon.levels.traps; import com.shatteredpixel.shatteredpixeldungeon.Assets; -import com.shatteredpixel.shatteredpixeldungeon.Dungeon; import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.Blob; import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.CorrosiveGas; import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene; @@ -38,10 +37,10 @@ public class CorrosionTrap extends Trap { @Override public void activate() { - CorrosiveGas corrosiveGas = Blob.seed(pos, 80 + 5 * Dungeon.depth, CorrosiveGas.class); + CorrosiveGas corrosiveGas = Blob.seed(pos, 80 + 5 * scalingDepth(), CorrosiveGas.class); Sample.INSTANCE.play(Assets.Sounds.GAS); - corrosiveGas.setStrength(1+Dungeon.depth/4); + corrosiveGas.setStrength(1+scalingDepth()/4); GameScene.add(corrosiveGas); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/DisintegrationTrap.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/DisintegrationTrap.java index e0fbb40ac..53673dc65 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/DisintegrationTrap.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/DisintegrationTrap.java @@ -74,7 +74,7 @@ public class DisintegrationTrap extends Trap { Sample.INSTANCE.play(Assets.Sounds.RAY); ShatteredPixelDungeon.scene().add(new Beam.DeathRay(DungeonTilemap.tileCenterToWorld(pos), target.sprite.center())); } - target.damage( Random.NormalIntRange(30, 50) + Dungeon.depth, this ); + target.damage( Random.NormalIntRange(30, 50) + scalingDepth(), this ); if (target == Dungeon.hero){ Hero hero = (Hero)target; if (!hero.isAlive()){ diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/FlashingTrap.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/FlashingTrap.java index 6a39c484c..237ed93ae 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/FlashingTrap.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/FlashingTrap.java @@ -49,7 +49,7 @@ public class FlashingTrap extends Trap { Char c = Actor.findChar( pos ); if (c != null) { - int damage = Math.max( 0, (4 + Dungeon.depth/2) - c.drRoll()/2 ); + int damage = Math.max( 0, (4 + scalingDepth()/2) - c.drRoll()/2 ); Buff.affect( c, Bleeding.class ).set( damage ); Buff.prolong( c, Blindness.class, Blindness.DURATION ); Buff.prolong( c, Cripple.class, Cripple.DURATION*2f ); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/GeyserTrap.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/GeyserTrap.java index 0154a89a0..9bab9057e 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/GeyserTrap.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/GeyserTrap.java @@ -75,7 +75,7 @@ public class GeyserTrap extends Trap { //does the equivalent of a bomb's damage against fiery enemies. if (Char.hasProp(ch, Char.Property.FIERY)){ - int dmg = Random.NormalIntRange(5 + Dungeon.scalingDepth(), 10 + Dungeon.scalingDepth()*2); + int dmg = Random.NormalIntRange(5 + scalingDepth(), 10 + scalingDepth()*2); dmg *= 0.67f; if (!ch.isImmune(GeyserTrap.class)){ ch.damage(dmg, this); @@ -117,7 +117,7 @@ public class GeyserTrap extends Trap { //does the equivalent of a bomb's damage against fiery enemies. if (Char.hasProp(ch, Char.Property.FIERY)){ - int dmg = Random.NormalIntRange(5 + Dungeon.scalingDepth(), 10 + Dungeon.scalingDepth()*2); + int dmg = Random.NormalIntRange(5 + scalingDepth(), 10 + scalingDepth()*2); if (!ch.isImmune(GeyserTrap.class)){ ch.damage(dmg, this); } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/GrippingTrap.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/GrippingTrap.java index 6a8c593eb..c8ca9a7e1 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/GrippingTrap.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/GrippingTrap.java @@ -21,7 +21,6 @@ package com.shatteredpixel.shatteredpixeldungeon.levels.traps; -import com.shatteredpixel.shatteredpixeldungeon.Dungeon; import com.shatteredpixel.shatteredpixeldungeon.actors.Actor; import com.shatteredpixel.shatteredpixeldungeon.actors.Char; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Bleeding; @@ -45,7 +44,7 @@ public class GrippingTrap extends Trap { Char c = Actor.findChar( pos ); if (c != null && !c.flying) { - int damage = Math.max( 0, (2 + Dungeon.depth/2) - c.drRoll()/2 ); + int damage = Math.max( 0, (2 + scalingDepth()/2) - c.drRoll()/2 ); Buff.affect( c, Bleeding.class ).set( damage ); Buff.prolong( c, Cripple.class, Cripple.DURATION); Wound.hit( c ); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/GuardianTrap.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/GuardianTrap.java index efc5a4a06..d9ba9689a 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/GuardianTrap.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/GuardianTrap.java @@ -54,7 +54,7 @@ public class GuardianTrap extends Trap { Sample.INSTANCE.play( Assets.Sounds.ALERT ); - for (int i = 0; i < (Dungeon.depth - 5)/5; i++){ + for (int i = 0; i < (scalingDepth() - 5)/5; i++){ Guardian guardian = new Guardian(); guardian.state = guardian.WANDERING; guardian.pos = Dungeon.level.randomRespawnCell( guardian ); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/PoisonDartTrap.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/PoisonDartTrap.java index d74bf4cd3..551be0dc2 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/PoisonDartTrap.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/PoisonDartTrap.java @@ -47,7 +47,7 @@ public class PoisonDartTrap extends Trap { } protected int poisonAmount(){ - return 8 + Math.round(2*Dungeon.depth / 3f); + return 8 + Math.round(2*scalingDepth() / 3f); } protected boolean canTarget( Char ch ){ diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/RockfallTrap.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/RockfallTrap.java index 783b199a4..65c612f80 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/RockfallTrap.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/RockfallTrap.java @@ -94,7 +94,7 @@ public class RockfallTrap extends Trap { Char ch = Actor.findChar( cell ); if (ch != null && ch.isAlive()){ - int damage = Random.NormalIntRange(5+Dungeon.depth, 10+Dungeon.depth*2); + int damage = Random.NormalIntRange(5+scalingDepth(), 10+scalingDepth()*2); damage -= ch.drRoll(); ch.damage( Math.max(damage, 0) , this); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/ToxicTrap.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/ToxicTrap.java index dd94e273e..9ea5b34d8 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/ToxicTrap.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/ToxicTrap.java @@ -22,7 +22,6 @@ package com.shatteredpixel.shatteredpixeldungeon.levels.traps; import com.shatteredpixel.shatteredpixeldungeon.Assets; -import com.shatteredpixel.shatteredpixeldungeon.Dungeon; import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.Blob; import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.ToxicGas; import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene; @@ -38,7 +37,7 @@ public class ToxicTrap extends Trap{ @Override public void activate() { - GameScene.add( Blob.seed( pos, 300 + 20 * Dungeon.depth, ToxicGas.class ) ); + GameScene.add( Blob.seed( pos, 300 + 20 * scalingDepth(), ToxicGas.class ) ); Sample.INSTANCE.play(Assets.Sounds.GAS); } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/Trap.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/Trap.java index 6df4e2915..1b325e857 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/Trap.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/Trap.java @@ -104,6 +104,13 @@ public abstract class Trap implements Bundlable { Dungeon.level.disarmTrap(pos); } + //returns the depth value the trap should use for determining its power + //If the trap is part of the level, it should use the true depth + //If it's not part of the level (e.g. effect from reclaim trap), use scaling depth + protected int scalingDepth(){ + return Dungeon.level.traps.get(pos) == this ? Dungeon.depth : Dungeon.scalingDepth(); + } + public String name(){ return Messages.get(this, "name"); }