From f84c11b1107acf25c2919cee23e9e952c3e01ee9 Mon Sep 17 00:00:00 2001 From: Evan Debenham Date: Tue, 13 May 2025 11:55:45 -0400 Subject: [PATCH] v3.1.0: changed non-sewers quest penalties to on-attack, not on-hit --- .../actors/mobs/CrystalGuardian.java | 4 ++-- .../actors/mobs/FetidRat.java | 1 + .../actors/mobs/GnollTrickster.java | 1 + .../actors/mobs/RotLasher.java | 11 ++++++++--- .../items/quest/CorpseDust.java | 18 +++++++++--------- 5 files changed, 21 insertions(+), 14 deletions(-) diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/CrystalGuardian.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/CrystalGuardian.java index afac28a7b..ff552703a 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/CrystalGuardian.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/CrystalGuardian.java @@ -117,7 +117,7 @@ public class CrystalGuardian extends Mob{ } @Override - public int attackProc(Char enemy, int damage) { + public boolean attack(Char enemy, float dmgMulti, float dmgBonus, float accMulti) { //if enemy is hero, and they aren't currently fighting the spire, -100 points if (enemy == Dungeon.hero){ boolean spireNear = false; @@ -130,7 +130,7 @@ public class CrystalGuardian extends Mob{ Statistics.questScores[2] -= 100; } } - return super.attackProc(enemy, damage); + return super.attack(enemy, dmgMulti, dmgBonus, accMulti); } @Override diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/FetidRat.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/FetidRat.java index 53fb1827a..255709b27 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/FetidRat.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/FetidRat.java @@ -66,6 +66,7 @@ public class FetidRat extends Rat { damage = super.attackProc( enemy, damage ); if (Random.Int(3) == 0) { Buff.affect(enemy, Ooze.class).set( Ooze.DURATION ); + //score loss is on-hit instead of on-attack because it's tied to ooze if (enemy == Dungeon.hero && !Dungeon.level.water[enemy.pos]){ Statistics.questScores[0] -= 50; } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/GnollTrickster.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/GnollTrickster.java index a7c444f6e..ccdc5d889 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/GnollTrickster.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/GnollTrickster.java @@ -78,6 +78,7 @@ public class GnollTrickster extends Gnoll { damage = super.attackProc( enemy, damage ); if (combo >= 1){ + //score loss is on-hit instead of on-attack as it's tied to combo Statistics.questScores[0] -= 50; } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/RotLasher.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/RotLasher.java index a028746cf..10321fa85 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/RotLasher.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/RotLasher.java @@ -74,12 +74,17 @@ public class RotLasher extends Mob { } @Override - public int attackProc(Char enemy, int damage) { - damage = super.attackProc( enemy, damage ); - Buff.affect( enemy, Cripple.class, 2f ); + public boolean attack(Char enemy, float dmgMulti, float dmgBonus, float accMulti) { if (enemy == Dungeon.hero){ Statistics.questScores[1] -= 100; } + return super.attack(enemy, dmgMulti, dmgBonus, accMulti); + } + + @Override + public int attackProc(Char enemy, int damage) { + damage = super.attackProc( enemy, damage ); + Buff.affect( enemy, Cripple.class, 2f ); return super.attackProc(enemy, damage); } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/quest/CorpseDust.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/quest/CorpseDust.java index a51861629..de0d36d47 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/quest/CorpseDust.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/quest/CorpseDust.java @@ -184,32 +184,32 @@ public class CorpseDust extends Item { public static class DustWraith extends Wraith{ - private int hitCount = 0; + private int atkCount = 0; @Override - public int attackProc(Char enemy, int damage) { + public boolean attack(Char enemy, float dmgMulti, float dmgBonus, float accMulti) { if (enemy == Dungeon.hero){ - hitCount++; - //first hit from each wraith is free, max of -200 point penalty per wraith - if (hitCount == 2 || hitCount == 3){ + atkCount++; + //first attack from each wraith is free, max of -200 point penalty per wraith + if (atkCount == 2 || atkCount == 3){ Statistics.questScores[1] -= 100; } } - return super.attackProc(enemy, damage); + return super.attack(enemy, dmgMulti, dmgBonus, accMulti); } - private static final String HIT_COUNT = "hit_count"; + private static final String ATK_COUNT = "atk_count"; @Override public void storeInBundle(Bundle bundle) { super.storeInBundle(bundle); - bundle.put(HIT_COUNT, hitCount); + bundle.put(ATK_COUNT, atkCount); } @Override public void restoreFromBundle(Bundle bundle) { super.restoreFromBundle(bundle); - hitCount = bundle.getInt(HIT_COUNT); + atkCount = bundle.getInt(ATK_COUNT); } }