v2.1.0: improved logic for boss level messages during ascension
This commit is contained in:
@@ -24,11 +24,13 @@ package com.shatteredpixel.shatteredpixeldungeon.actors.buffs;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.Badges;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.Statistics;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.Actor;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.Char;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.abilities.Ratmogrify;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.*;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.npcs.Shopkeeper;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.Amulet;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.DriedRose;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.messages.Languages;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.ui.BuffIndicator;
|
||||
@@ -202,6 +204,7 @@ public class AscensionChallenge extends Buff {
|
||||
public void onLevelSwitch(){
|
||||
if (Dungeon.depth < Statistics.highestAscent){
|
||||
Statistics.highestAscent = Dungeon.depth;
|
||||
justAscended = true;
|
||||
if (Dungeon.bossLevel()){
|
||||
Dungeon.hero.buff(Hunger.class).satisfy(Hunger.STARVING);
|
||||
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(){
|
||||
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 {
|
||||
if (Dungeon.depth == 1){
|
||||
GLog.n(Messages.get(this, "almost"));
|
||||
@@ -248,6 +261,7 @@ public class AscensionChallenge extends Buff {
|
||||
GLog.h(Messages.get(this, "weaken_info"));
|
||||
}
|
||||
}
|
||||
justAscended = false;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -549,16 +549,8 @@ public class GameScene extends PixelScene {
|
||||
}
|
||||
}
|
||||
|
||||
if (Dungeon.hero.buff(AscensionChallenge.class) != null
|
||||
&& Dungeon.depth == Statistics.highestAscent){
|
||||
if (Dungeon.hero.buff(AscensionChallenge.class) != null){
|
||||
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;
|
||||
|
||||
Reference in New Issue
Block a user