From 4f800f4ebcf3965a80a25068fb3763d9026bf415 Mon Sep 17 00:00:00 2001 From: Evan Debenham Date: Fri, 22 Jul 2022 12:53:35 -0400 Subject: [PATCH] v1.3.2: fixed further levelgen inconsistencies caused by champions --- .../actors/buffs/ChampionEnemy.java | 28 +++++++++---------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/ChampionEnemy.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/ChampionEnemy.java index 8d028a450..ca0a2016a 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/ChampionEnemy.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/ChampionEnemy.java @@ -100,21 +100,21 @@ public abstract class ChampionEnemy extends Buff { Dungeon.mobsToChampion--; - if (Dungeon.mobsToChampion <= 0){ - Class buffCls; - switch (Random.Int(6)){ - case 0: default: buffCls = Blazing.class; break; - case 1: buffCls = Projecting.class; break; - case 2: buffCls = AntiMagic.class; break; - case 3: buffCls = Giant.class; break; - case 4: buffCls = Blessed.class; break; - case 5: buffCls = Growing.class; break; - } + //we roll for a champion enemy even if we aren't spawning one to ensure that + //mobsToChampion does not affect levelgen RNG (number of calls to Random.Int() is constant) + Class buffCls; + switch (Random.Int(6)){ + case 0: default: buffCls = Blazing.class; break; + case 1: buffCls = Projecting.class; break; + case 2: buffCls = AntiMagic.class; break; + case 3: buffCls = Giant.class; break; + case 4: buffCls = Blessed.class; break; + case 5: buffCls = Growing.class; break; + } - if (Dungeon.isChallenged(Challenges.CHAMPION_ENEMIES)) { - Buff.affect(m, buffCls); - m.state = m.WANDERING; - } + if (Dungeon.mobsToChampion <= 0 && Dungeon.isChallenged(Challenges.CHAMPION_ENEMIES)) { + Buff.affect(m, buffCls); + m.state = m.WANDERING; } }