From 5c3fc8c9e9a32f4cfed38cb7660f90d2372d6159 Mon Sep 17 00:00:00 2001 From: Evan Debenham Date: Mon, 28 Jul 2025 12:48:51 -0400 Subject: [PATCH] v3.2.0: thrown weps (inc. arrows) no longer use atk delay on empty space --- .../items/weapon/missiles/ForceCube.java | 12 +++++++++++- .../items/weapon/missiles/MissileWeapon.java | 7 ++++++- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/ForceCube.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/ForceCube.java index 8c360c1f8..471bdc688 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/ForceCube.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/ForceCube.java @@ -58,9 +58,19 @@ public class ForceCube extends MissileWeapon { //no hitsound as it never hits enemies directly } + @Override + public float castDelay(Char user, int dst) { + //special rules as throwing this onto empty space or yourself does trigger it + if (!Dungeon.level.pit[dst] && Actor.findChar(dst) == null){ + return delayFactor( user ); + } else { + return super.castDelay(user, dst); + } + } + @Override protected void onThrow(int cell) { - if (Dungeon.level.pit[cell]){ + if ((Dungeon.level.pit[cell] && Actor.findChar(cell) == null)){ super.onThrow(cell); return; } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/MissileWeapon.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/MissileWeapon.java index d35b96691..c9e0eccca 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/MissileWeapon.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/MissileWeapon.java @@ -392,7 +392,12 @@ abstract public class MissileWeapon extends Weapon { @Override public float castDelay(Char user, int dst) { - return delayFactor( user ); + if (Actor.findChar(dst) != null && Actor.findChar(dst) != user){ + //TODO force cube + return delayFactor( user ); + } else { + return super.castDelay(user, dst); + } } protected void rangedHit( Char enemy, int cell ){