From 1f0ea47d143ad1b2e4e728f4ae4af8cc2a9944fa Mon Sep 17 00:00:00 2001 From: Evan Debenham Date: Sun, 23 Apr 2023 20:20:40 -0400 Subject: [PATCH] v2.1.0: adjusted boss regen caps a bit, made notably harsher with chals --- .../actors/buffs/LockedFloor.java | 5 ++++- .../shatteredpixeldungeon/actors/mobs/DM300.java | 5 ++++- .../actors/mobs/DwarfKing.java | 5 ++++- .../shatteredpixeldungeon/actors/mobs/Goo.java | 10 ++++++++-- .../shatteredpixeldungeon/actors/mobs/Pylon.java | 7 +++++++ .../shatteredpixeldungeon/actors/mobs/Tengu.java | 4 ++-- .../actors/mobs/YogDzewa.java | 5 ++++- .../actors/mobs/YogFist.java | 15 +++++++++++++++ 8 files changed, 48 insertions(+), 8 deletions(-) diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/LockedFloor.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/LockedFloor.java index f89973ce8..1f46b2e12 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/LockedFloor.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/LockedFloor.java @@ -21,6 +21,7 @@ package com.shatteredpixel.shatteredpixeldungeon.actors.buffs; +import com.shatteredpixel.shatteredpixeldungeon.Challenges; import com.shatteredpixel.shatteredpixeldungeon.Dungeon; import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; import com.shatteredpixel.shatteredpixeldungeon.ui.BuffIndicator; @@ -29,7 +30,8 @@ import com.watabou.utils.Bundle; public class LockedFloor extends Buff { //the amount of turns remaining before beneficial passive effects turn off - private float left = 50; //starts at 50 turns + //starts at 50 turns normally, 20 with badder bosses + private float left = Dungeon.isChallenged(Challenges.STRONGER_BOSSES) ? 20 : 50; @Override public boolean act() { @@ -46,6 +48,7 @@ public class LockedFloor extends Buff { public void addTime(float time){ left += time; + left = Math.max(left, 50); //cannot build to more than 50 } public void removeTime(float time){ diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/DM300.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/DM300.java index 40b8ecb92..273d701ad 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/DM300.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/DM300.java @@ -478,7 +478,10 @@ public class DM300 extends Mob { int dmgTaken = preHP - HP; if (dmgTaken > 0) { LockedFloor lock = Dungeon.hero.buff(LockedFloor.class); - if (lock != null && !isImmune(src.getClass())) lock.addTime(dmgTaken*1.5f); + if (lock != null && !isImmune(src.getClass())){ + if (Dungeon.isChallenged(Challenges.STRONGER_BOSSES)) lock.addTime(dmgTaken/2f); + else lock.addTime(dmgTaken); + } } int threshold; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/DwarfKing.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/DwarfKing.java index ec21d3f5e..555f012da 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/DwarfKing.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/DwarfKing.java @@ -473,7 +473,10 @@ public class DwarfKing extends Mob { super.damage(dmg, src); LockedFloor lock = Dungeon.hero.buff(LockedFloor.class); - if (lock != null && !isImmune(src.getClass())) lock.addTime(dmg/3); + if (lock != null && !isImmune(src.getClass())){ + if (Dungeon.isChallenged(Challenges.STRONGER_BOSSES)) lock.addTime(dmg/5f); + else lock.addTime(dmg/3f); + } if (phase == 1) { int dmgTaken = preHP - HP; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Goo.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Goo.java index 3fa7ff311..5e0ed19bb 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Goo.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Goo.java @@ -111,7 +111,10 @@ public class Goo extends Mob { Statistics.qualifiedForBossChallengeBadge = false; LockedFloor lock = Dungeon.hero.buff(LockedFloor.class); - if (lock != null) lock.removeTime(healInc*2); + if (lock != null){ + if (Dungeon.isChallenged(Challenges.STRONGER_BOSSES)) lock.removeTime(healInc); + else lock.removeTime(healInc*1.5f); + } if (Dungeon.level.heroFOV[pos] ){ sprite.emitter().burst( Speck.factory( Speck.HEALING ), healInc ); @@ -270,7 +273,10 @@ public class Goo extends Mob { yell(Messages.get(this, "gluuurp")); } LockedFloor lock = Dungeon.hero.buff(LockedFloor.class); - if (lock != null) lock.addTime(dmg*2); + if (lock != null){ + if (Dungeon.isChallenged(Challenges.STRONGER_BOSSES)) lock.addTime(dmg); + else lock.addTime(dmg*1.5f); + } } @Override diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Pylon.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Pylon.java index f92b1c5ba..bebed7a9c 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Pylon.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Pylon.java @@ -32,6 +32,7 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.ToxicGas; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Amok; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Dread; +import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.LockedFloor; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Paralysis; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Sleep; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Terror; @@ -189,6 +190,12 @@ public class Pylon extends Mob { //takes 15/16/17/18/19/20 dmg at 15/17/20/24/29/36 incoming dmg dmg = 14 + (int)(Math.sqrt(8*(dmg - 14) + 1) - 1)/2; } + + LockedFloor lock = Dungeon.hero.buff(LockedFloor.class); + if (lock != null && !isImmune(src.getClass())){ + if (Dungeon.isChallenged(Challenges.STRONGER_BOSSES)) lock.addTime(dmg/2f); + else lock.addTime(dmg); + } super.damage(dmg, src); } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Tengu.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Tengu.java index f1d375b23..654db4e15 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Tengu.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Tengu.java @@ -149,8 +149,8 @@ public class Tengu extends Mob { LockedFloor lock = Dungeon.hero.buff(LockedFloor.class); if (lock != null) { - int multiple = state == PrisonBossLevel.State.FIGHT_START ? 1 : 4; - lock.addTime(dmg*multiple); + if (Dungeon.isChallenged(Challenges.STRONGER_BOSSES)) lock.addTime(dmg/2f); + else lock.addTime(dmg); } //phase 2 of the fight is over diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/YogDzewa.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/YogDzewa.java index 768f5574a..b117f567b 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/YogDzewa.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/YogDzewa.java @@ -418,7 +418,10 @@ public class YogDzewa extends Mob { } LockedFloor lock = Dungeon.hero.buff(LockedFloor.class); - if (lock != null) lock.addTime(dmgTaken); + if (lock != null){ + if (Dungeon.isChallenged(Challenges.STRONGER_BOSSES)) lock.addTime(dmgTaken/3f); + else lock.addTime(dmgTaken/2f); + } } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/YogFist.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/YogFist.java index 30e48878a..a2250a861 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/YogFist.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/YogFist.java @@ -22,6 +22,7 @@ package com.shatteredpixel.shatteredpixeldungeon.actors.mobs; import com.shatteredpixel.shatteredpixeldungeon.Badges; +import com.shatteredpixel.shatteredpixeldungeon.Challenges; import com.shatteredpixel.shatteredpixeldungeon.Dungeon; import com.shatteredpixel.shatteredpixeldungeon.actors.Actor; import com.shatteredpixel.shatteredpixeldungeon.actors.Char; @@ -36,6 +37,7 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Cripple; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Frost; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Invisibility; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Light; +import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.LockedFloor; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Ooze; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Roots; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Sleep; @@ -140,6 +142,19 @@ public abstract class YogFist extends Mob { } } + @Override + public void damage(int dmg, Object src) { + int preHP = HP; + super.damage(dmg, src); + int dmgTaken = HP - preHP; + + LockedFloor lock = Dungeon.hero.buff(LockedFloor.class); + if (dmgTaken > 0 && lock != null){ + if (Dungeon.isChallenged(Challenges.STRONGER_BOSSES)) lock.addTime(dmgTaken/4f); + else lock.addTime(dmgTaken/2f); + } + } + protected abstract void zap(); public void onZapComplete(){