v0.7.5e: Tengu balance changes:

- can no longer directly attack invisible heroes
- can now use abilities on any hero he can't see
- Tengu abilities are now shown regardless of visibility
This commit is contained in:
Evan Debenham 2019-10-24 12:42:51 -04:00
parent db8eb884f6
commit 8bc82fd9ca
4 changed files with 20 additions and 29 deletions

View File

@ -44,6 +44,8 @@ public class Blob extends Actor {
public Rect area = new Rect();
public boolean alwaysVisible = false;
private static final String CUR = "cur";
private static final String START = "start";
private static final String LENGTH = "length";

View File

@ -106,12 +106,8 @@ public class NewTengu extends Mob {
@Override
public int attackSkill( Char target ) {
if (target.invisible > 0){
return 6;
} else {
return 18;
}
}
@Override
public int drRoll() {
@ -346,18 +342,6 @@ public class NewTengu extends Mob {
@Override
public boolean act(boolean enemyInFOV, boolean justAlerted) {
if (enemy != null && !enemyInFOV && fieldOfView[enemy.pos]){
if (!yelledCoward) {
yell(Messages.get(NewTengu.class, "coward"));
yelledCoward = true;
//TODO translate
if (Messages.lang() == Languages.ENGLISH){
GLog.i("(Tengu can still attack if you are invisible, but his accuracy is reduced.)");
}
}
enemyInFOV = true;
}
enemySeen = enemyInFOV;
if (enemyInFOV && !isCharmedBy( enemy ) && canAttack( enemy )) {
@ -373,9 +357,16 @@ public class NewTengu extends Mob {
target = enemy.pos;
} else {
chooseEnemy();
if (enemy != null) {
if (enemy == null){
//if nothing else can be targeted, target hero
enemy = Dungeon.hero;
}
target = enemy.pos;
}
//if not charmed, attempt to use an ability, even if the enemy can't be seen
if (canUseAbility()){
return useAbility();
}
spend( TICK );
@ -599,6 +590,7 @@ public class NewTengu extends Mob {
public static class BombBlob extends Blob {
{
actPriority = BUFF_PRIO - 1;
alwaysVisible = true;
}
@Override
@ -632,13 +624,11 @@ public class NewTengu extends Mob {
}
}
if (Dungeon.level.heroFOV[cell]) {
exploded = true;
CellEmitter.center(cell).burst(BlastParticle.FACTORY, 2);
}
}
}
}
if (exploded){
Sample.INSTANCE.play(Assets.SND_BLAST);
@ -799,6 +789,7 @@ public class NewTengu extends Mob {
{
actPriority = BUFF_PRIO - 1;
alwaysVisible = true;
}
@Override
@ -831,13 +822,11 @@ public class NewTengu extends Mob {
GameScene.updateMap( cell );
}
if (Dungeon.level.heroFOV[cell]){
burned = true;
CellEmitter.get(cell).start(FlameParticle.FACTORY, 0.03f, 10);
}
}
}
}
if (observe) {
Dungeon.observe();
@ -980,6 +969,7 @@ public class NewTengu extends Mob {
{
actPriority = BUFF_PRIO - 1;
alwaysVisible = true;
}
@Override

View File

@ -57,7 +57,7 @@ public class BlobEmitter extends Emitter {
for (int j = blob.area.top; j < blob.area.bottom; j++) {
cell = i + j*Dungeon.level.width();
if (cell < Dungeon.level.heroFOV.length
&& Dungeon.level.heroFOV[cell]
&& (Dungeon.level.heroFOV[cell] || blob.alwaysVisible)
&& map[cell] > 0) {
float x = (i + Random.Float()) * size;
float y = (j + Random.Float()) * size;

View File

@ -589,7 +589,6 @@ actors.mobs.newtengu.name=Tengu
actors.mobs.newtengu.notice_gotcha=Gotcha, %s!
actors.mobs.newtengu.interesting=Let's make this interesting...
actors.mobs.newtengu.notice_have=I have you now, %s!
actors.mobs.newtengu.coward=I can still hear you, Coward!
actors.mobs.newtengu.defeated=Free at last...
actors.mobs.newtengu.rankings_desc=Assassinated by the Tengu
actors.mobs.newtengu.desc=A famous and enigmatic assassin, named for the mask grafted to his face.\n\nTengu is held down with large clasps on his wrists and knees, though he seems to have gotten rid of his chains long ago.\n\nHe will try to use traps, deceptive magic, and precise attacks to eliminate the only thing stopping his escape: you.