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;
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){

View File

@@ -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;

View File

@@ -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;

View File

@@ -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

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.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);
}

View File

@@ -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

View File

@@ -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);
}
}

View File

@@ -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(){