v2.1.0: adjusted boss regen caps a bit, made notably harsher with chals

This commit is contained in:
Evan Debenham
2023-04-23 20:20:40 -04:00
parent 088eea665a
commit 1f0ea47d14
8 changed files with 48 additions and 8 deletions

View File

@@ -21,6 +21,7 @@
package com.shatteredpixel.shatteredpixeldungeon.actors.buffs; package com.shatteredpixel.shatteredpixeldungeon.actors.buffs;
import com.shatteredpixel.shatteredpixeldungeon.Challenges;
import com.shatteredpixel.shatteredpixeldungeon.Dungeon; import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
import com.shatteredpixel.shatteredpixeldungeon.ui.BuffIndicator; import com.shatteredpixel.shatteredpixeldungeon.ui.BuffIndicator;
@@ -29,7 +30,8 @@ import com.watabou.utils.Bundle;
public class LockedFloor extends Buff { public class LockedFloor extends Buff {
//the amount of turns remaining before beneficial passive effects turn off //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 @Override
public boolean act() { public boolean act() {
@@ -46,6 +48,7 @@ public class LockedFloor extends Buff {
public void addTime(float time){ public void addTime(float time){
left += time; left += time;
left = Math.max(left, 50); //cannot build to more than 50
} }
public void removeTime(float time){ public void removeTime(float time){

View File

@@ -478,7 +478,10 @@ public class DM300 extends Mob {
int dmgTaken = preHP - HP; int dmgTaken = preHP - HP;
if (dmgTaken > 0) { if (dmgTaken > 0) {
LockedFloor lock = Dungeon.hero.buff(LockedFloor.class); 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; int threshold;

View File

@@ -473,7 +473,10 @@ public class DwarfKing extends Mob {
super.damage(dmg, src); super.damage(dmg, src);
LockedFloor lock = Dungeon.hero.buff(LockedFloor.class); 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) { if (phase == 1) {
int dmgTaken = preHP - HP; int dmgTaken = preHP - HP;

View File

@@ -111,7 +111,10 @@ public class Goo extends Mob {
Statistics.qualifiedForBossChallengeBadge = false; Statistics.qualifiedForBossChallengeBadge = false;
LockedFloor lock = Dungeon.hero.buff(LockedFloor.class); 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] ){ if (Dungeon.level.heroFOV[pos] ){
sprite.emitter().burst( Speck.factory( Speck.HEALING ), healInc ); sprite.emitter().burst( Speck.factory( Speck.HEALING ), healInc );
@@ -270,7 +273,10 @@ public class Goo extends Mob {
yell(Messages.get(this, "gluuurp")); yell(Messages.get(this, "gluuurp"));
} }
LockedFloor lock = Dungeon.hero.buff(LockedFloor.class); 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 @Override

View File

@@ -32,6 +32,7 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.ToxicGas;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Amok; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Amok;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Dread; 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.Paralysis;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Sleep; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Sleep;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Terror; 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 //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; 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); super.damage(dmg, src);
} }

View File

@@ -149,8 +149,8 @@ public class Tengu extends Mob {
LockedFloor lock = Dungeon.hero.buff(LockedFloor.class); LockedFloor lock = Dungeon.hero.buff(LockedFloor.class);
if (lock != null) { if (lock != null) {
int multiple = state == PrisonBossLevel.State.FIGHT_START ? 1 : 4; if (Dungeon.isChallenged(Challenges.STRONGER_BOSSES)) lock.addTime(dmg/2f);
lock.addTime(dmg*multiple); else lock.addTime(dmg);
} }
//phase 2 of the fight is over //phase 2 of the fight is over

View File

@@ -418,7 +418,10 @@ public class YogDzewa extends Mob {
} }
LockedFloor lock = Dungeon.hero.buff(LockedFloor.class); 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);
}
} }

View File

@@ -22,6 +22,7 @@
package com.shatteredpixel.shatteredpixeldungeon.actors.mobs; package com.shatteredpixel.shatteredpixeldungeon.actors.mobs;
import com.shatteredpixel.shatteredpixeldungeon.Badges; import com.shatteredpixel.shatteredpixeldungeon.Badges;
import com.shatteredpixel.shatteredpixeldungeon.Challenges;
import com.shatteredpixel.shatteredpixeldungeon.Dungeon; import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
import com.shatteredpixel.shatteredpixeldungeon.actors.Actor; import com.shatteredpixel.shatteredpixeldungeon.actors.Actor;
import com.shatteredpixel.shatteredpixeldungeon.actors.Char; 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.Frost;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Invisibility; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Invisibility;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Light; 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.Ooze;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Roots; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Roots;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Sleep; 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(); protected abstract void zap();
public void onZapComplete(){ public void onZapComplete(){