v2.1.0: improved logic for boss level messages during ascension

This commit is contained in:
Evan Debenham
2023-04-28 12:41:40 -04:00
parent 67132b929f
commit fa828c402a
2 changed files with 16 additions and 10 deletions
@@ -24,11 +24,13 @@ package com.shatteredpixel.shatteredpixeldungeon.actors.buffs;
import com.shatteredpixel.shatteredpixeldungeon.Badges; import com.shatteredpixel.shatteredpixeldungeon.Badges;
import com.shatteredpixel.shatteredpixeldungeon.Dungeon; import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
import com.shatteredpixel.shatteredpixeldungeon.Statistics; import com.shatteredpixel.shatteredpixeldungeon.Statistics;
import com.shatteredpixel.shatteredpixeldungeon.actors.Actor;
import com.shatteredpixel.shatteredpixeldungeon.actors.Char; import com.shatteredpixel.shatteredpixeldungeon.actors.Char;
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.abilities.Ratmogrify; import com.shatteredpixel.shatteredpixeldungeon.actors.hero.abilities.Ratmogrify;
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.*; import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.*;
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.npcs.Shopkeeper; import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.npcs.Shopkeeper;
import com.shatteredpixel.shatteredpixeldungeon.items.Amulet; import com.shatteredpixel.shatteredpixeldungeon.items.Amulet;
import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.DriedRose;
import com.shatteredpixel.shatteredpixeldungeon.messages.Languages; import com.shatteredpixel.shatteredpixeldungeon.messages.Languages;
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
import com.shatteredpixel.shatteredpixeldungeon.ui.BuffIndicator; import com.shatteredpixel.shatteredpixeldungeon.ui.BuffIndicator;
@@ -202,6 +204,7 @@ public class AscensionChallenge extends Buff {
public void onLevelSwitch(){ public void onLevelSwitch(){
if (Dungeon.depth < Statistics.highestAscent){ if (Dungeon.depth < Statistics.highestAscent){
Statistics.highestAscent = Dungeon.depth; Statistics.highestAscent = Dungeon.depth;
justAscended = true;
if (Dungeon.bossLevel()){ if (Dungeon.bossLevel()){
Dungeon.hero.buff(Hunger.class).satisfy(Hunger.STARVING); Dungeon.hero.buff(Hunger.class).satisfy(Hunger.STARVING);
Buff.affect(Dungeon.hero, Healing.class).setHeal(Dungeon.hero.HT, 0, 20); Buff.affect(Dungeon.hero, Healing.class).setHeal(Dungeon.hero.HT, 0, 20);
@@ -229,9 +232,19 @@ public class AscensionChallenge extends Buff {
} }
//messages at boss levels only trigger on first ascent
private boolean justAscended = false;
public void saySwitch(){ public void saySwitch(){
if (Dungeon.bossLevel()){ if (Dungeon.bossLevel()){
GLog.p(Messages.get(this, "break")); if (justAscended) {
GLog.p(Messages.get(this, "break"));
for (Char ch : Actor.chars()){
if (ch instanceof DriedRose.GhostHero){
((DriedRose.GhostHero) ch).sayAppeared();
}
}
}
} else { } else {
if (Dungeon.depth == 1){ if (Dungeon.depth == 1){
GLog.n(Messages.get(this, "almost")); GLog.n(Messages.get(this, "almost"));
@@ -248,6 +261,7 @@ public class AscensionChallenge extends Buff {
GLog.h(Messages.get(this, "weaken_info")); GLog.h(Messages.get(this, "weaken_info"));
} }
} }
justAscended = false;
} }
@Override @Override
@@ -549,16 +549,8 @@ public class GameScene extends PixelScene {
} }
} }
if (Dungeon.hero.buff(AscensionChallenge.class) != null if (Dungeon.hero.buff(AscensionChallenge.class) != null){
&& Dungeon.depth == Statistics.highestAscent){
Dungeon.hero.buff(AscensionChallenge.class).saySwitch(); Dungeon.hero.buff(AscensionChallenge.class).saySwitch();
if (Dungeon.bossLevel()){
for (Char ch : Actor.chars()){
if (ch instanceof DriedRose.GhostHero){
((DriedRose.GhostHero) ch).sayAppeared();
}
}
}
} }
InterlevelScene.mode = InterlevelScene.Mode.NONE; InterlevelScene.mode = InterlevelScene.Mode.NONE;