v2.2.0: balance changes to hostile champions

This commit is contained in:
Evan Debenham
2023-07-11 12:39:10 -04:00
parent a98a92dfbb
commit ad18af5974
3 changed files with 28 additions and 14 deletions

View File

@@ -127,15 +127,15 @@ actors.buffs.burning.desc=Few things are more distressing than being engulfed in
actors.buffs.championenemy.warn=You sense a deadly presence.
actors.buffs.championenemy$blazing.name=blazing champion
actors.buffs.championenemy$blazing.desc=Blazing champions deal 25% more melee damage, ignite enemies they attack, are immune to fire, and spread fire around them as they die.
actors.buffs.championenemy$blazing.desc=Blazing champions deal 25% more melee damage, ignite enemies they attack, are immune to fire, and spread fire around them as they die. They can't spread fire onto water however.
actors.buffs.championenemy$projecting.name=projecting champion
actors.buffs.championenemy$projecting.desc=Projecting champions deal 25% more melee damage, and are able to attack any enemy that they can see.
actors.buffs.championenemy$projecting.desc=Projecting champions deal 25% more melee damage and have +4 attack range.
actors.buffs.championenemy$antimagic.name=antimagic champion
actors.buffs.championenemy$antimagic.desc=Antimagic champions take 25% less damage and are completely immune to magical effects.
actors.buffs.championenemy$antimagic.desc=Antimagic champions take 50% less damage and are completely immune to magical effects.
actors.buffs.championenemy$giant.name=giant champion
actors.buffs.championenemy$giant.desc=Giant champions take 75% less damage and have +1 attack range, but cannot move through enclosed spaces.
actors.buffs.championenemy$giant.desc=Giant champions take 80% less damage and have +1 attack range, but cannot move through enclosed spaces.
actors.buffs.championenemy$blessed.name=blessed champion
actors.buffs.championenemy$blessed.desc=Blessed champions have 200% more accuracy and evasion.
actors.buffs.championenemy$blessed.desc=Blessed champions have 4x accuracy and evasion.
actors.buffs.championenemy$growing.name=growing champion
actors.buffs.championenemy$growing.desc=Growing champions gain a steadily increasing bonus to accuracy, evasion, melee damage, and a reduction to damage taken.\n\nCurrent acc/eva/dmg boost: %1$d%%\nCurrent damage reduction: %2$d%%

View File

@@ -194,7 +194,7 @@ challenges.darkness_desc=It is a dungeon after all!\n\n- Regular visible distanc
challenges.no_scrolls=Forbidden runes
challenges.no_scrolls_desc=A certain rune is harder to find. Unfortunately, it's always the most useful one.\n\n- Half of the dungeon's upgrade scrolls are removed
challenges.champion_enemies=Hostile champions
challenges.champion_enemies_desc=You're not the only one who can level up!\n\n- Regular enemies have a 1/8 chance to spawn with a special champion buff\n- Champions wake up if they spawn asleep\n- The hero knows when a champion spawns\n- Champions are immune to corruption\n\nThere are six types of champion enemy:\n_Blazing (orange):_ +25% melee damage, ignites on hit, immune to fire, spreads flames on death\n_Projecting (purple):_ +25% melee damage, can attack anything they see\n_Antimagic (green):_ -25% damage taken, immune to magical effects\n_Giant (blue):_ -75% damage taken, +1 melee range, cannot move into tunnels\n_Blessed (yellow):_ +200% accuracy, +200% evasion\n_Growing (red):_ +20% accuracy, evasion, damage, and effective HP. Increases by 1% every 3 turns.
challenges.champion_enemies_desc=You're not the only one who can level up!\n\n- Regular enemies have a 1/8 chance to spawn with a special champion buff\n- Champions wake up if they spawn asleep\n- The hero knows when a champion spawns\n- Champions are immune to corruption\n\nThere are six types of champion enemy:\n_Blazing (orange):_ +25% melee damage, ignites on hit, spreads flames on death, can't ignite water tiles\n_Projecting (purple):_ +25% melee damage, +4 melee range\n_Antimagic (green):_ -50% damage taken, immune to magical effects\n_Giant (blue):_ -80% damage taken, +1 melee range, cannot move into tunnels\n_Blessed (yellow):_ 4x accuracy and evasion\n_Growing (red):_ +20% accuracy, evasion, damage, and effective HP. Increases by 1% every 4 turns.
challenges.stronger_bosses=Badder bosses
challenges.stronger_bosses_desc=Bosses are much tougher with this challenge!\n\n_Goo:_ +20% health\n_-_ Healing in water ramps up, to 3/turn\n_-_ Pumps up in 1 turn instead of 2\n_Tengu:_ +25% health\n_-_ Phase 1: traps are much deadlier\n_-_ Phase 2: abilities are more frequent\n_DM-300:_ +33% health\n_-_ Pylons are tougher and 3 activate\n_-_ Abilities are more powerful and frequent\n_-_ DM-300 is faster when supercharged\n_-_ Exposed wires are twice as common\n_Dwarf King:_ +50% health\n_-_ Minions are stronger in all phases\n_-_ Phase 1: faster abilities and summons\n_-_ Phase 2: 2 more minions per round\n_-_ Phase 3: 2x health, faster summons\n_Yog-Dzewa:_\n_-_ Two fists are summoned at a time!\n_-_ +60% laser damage\n_-_ Stronger minions

View File

@@ -116,7 +116,9 @@ public abstract class ChampionEnemy extends Buff {
@Override
public void onAttackProc(Char enemy) {
Buff.affect(enemy, Burning.class).reignite(enemy);
if (!Dungeon.level.water[enemy.pos]) {
Buff.affect(enemy, Burning.class).reignite(enemy);
}
}
@Override
@@ -124,7 +126,7 @@ public abstract class ChampionEnemy extends Buff {
//don't trigger when killed by being knocked into a pit
if (target.flying || !Dungeon.level.pit[target.pos]) {
for (int i : PathFinder.NEIGHBOURS9) {
if (!Dungeon.level.solid[target.pos + i]) {
if (!Dungeon.level.solid[target.pos + i] && !Dungeon.level.water[target.pos + i]) {
GameScene.add(Blob.seed(target.pos + i, 2, Fire.class));
}
}
@@ -154,8 +156,20 @@ public abstract class ChampionEnemy extends Buff {
}
@Override
public boolean canAttackWithExtraReach( Char enemy ) {
return target.fieldOfView[enemy.pos]; //if it can see it, it can attack it.
public boolean canAttackWithExtraReach(Char enemy) {
if (Dungeon.level.distance( target.pos, enemy.pos ) > 5){
return false;
} else {
boolean[] passable = BArray.not(Dungeon.level.solid, null);
for (Char ch : Actor.chars()) {
//our own tile is always passable
passable[ch.pos] = ch == target;
}
PathFinder.buildDistanceMap(enemy.pos, passable, 5);
return PathFinder.distance[target.pos] <= 5;
}
}
}
@@ -167,7 +181,7 @@ public abstract class ChampionEnemy extends Buff {
@Override
public float damageTakenFactor() {
return 0.75f;
return 0.5f;
}
{
@@ -185,7 +199,7 @@ public abstract class ChampionEnemy extends Buff {
@Override
public float damageTakenFactor() {
return 0.25f;
return 0.2f;
}
@Override
@@ -214,7 +228,7 @@ public abstract class ChampionEnemy extends Buff {
@Override
public float evasionAndAccuracyFactor() {
return 3f;
return 4f;
}
}
@@ -229,7 +243,7 @@ public abstract class ChampionEnemy extends Buff {
@Override
public boolean act() {
multiplier += 0.01f;
spend(3*TICK);
spend(4*TICK);
return true;
}