diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/blobs/Blob.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/blobs/Blob.java index 3d23ed6c6..e20e7ca82 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/blobs/Blob.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/blobs/Blob.java @@ -43,6 +43,8 @@ public class Blob extends Actor { public BlobEmitter emitter; public Rect area = new Rect(); + + public boolean alwaysVisible = false; private static final String CUR = "cur"; private static final String START = "start"; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/NewTengu.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/NewTengu.java index eaea1ddf7..1bb8fe7e4 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/NewTengu.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/NewTengu.java @@ -106,11 +106,7 @@ public class NewTengu extends Mob { @Override public int attackSkill( Char target ) { - if (target.invisible > 0){ - return 6; - } else { - return 18; - } + return 18; } @Override @@ -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) { - target = enemy.pos; + 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,10 +624,8 @@ public class NewTengu extends Mob { } } - if (Dungeon.level.heroFOV[cell]) { - exploded = true; - CellEmitter.center(cell).burst(BlastParticle.FACTORY, 2); - } + exploded = true; + CellEmitter.center(cell).burst(BlastParticle.FACTORY, 2); } } } @@ -799,6 +789,7 @@ public class NewTengu extends Mob { { actPriority = BUFF_PRIO - 1; + alwaysVisible = true; } @Override @@ -831,10 +822,8 @@ public class NewTengu extends Mob { GameScene.updateMap( cell ); } - if (Dungeon.level.heroFOV[cell]){ - burned = true; - CellEmitter.get(cell).start(FlameParticle.FACTORY, 0.03f, 10); - } + burned = true; + CellEmitter.get(cell).start(FlameParticle.FACTORY, 0.03f, 10); } } } @@ -980,6 +969,7 @@ public class NewTengu extends Mob { { actPriority = BUFF_PRIO - 1; + alwaysVisible = true; } @Override diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/effects/BlobEmitter.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/effects/BlobEmitter.java index 85d450453..2bce7699a 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/effects/BlobEmitter.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/effects/BlobEmitter.java @@ -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; diff --git a/core/src/main/resources/com/shatteredpixel/shatteredpixeldungeon/messages/actors/actors.properties b/core/src/main/resources/com/shatteredpixel/shatteredpixeldungeon/messages/actors/actors.properties index 5c4aef687..b52dbf9d8 100644 --- a/core/src/main/resources/com/shatteredpixel/shatteredpixeldungeon/messages/actors/actors.properties +++ b/core/src/main/resources/com/shatteredpixel/shatteredpixeldungeon/messages/actors/actors.properties @@ -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.