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:
parent
db8eb884f6
commit
8bc82fd9ca
|
@ -44,6 +44,8 @@ public class Blob extends Actor {
|
||||||
|
|
||||||
public Rect area = new Rect();
|
public Rect area = new Rect();
|
||||||
|
|
||||||
|
public boolean alwaysVisible = false;
|
||||||
|
|
||||||
private static final String CUR = "cur";
|
private static final String CUR = "cur";
|
||||||
private static final String START = "start";
|
private static final String START = "start";
|
||||||
private static final String LENGTH = "length";
|
private static final String LENGTH = "length";
|
||||||
|
|
|
@ -106,12 +106,8 @@ public class NewTengu extends Mob {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int attackSkill( Char target ) {
|
public int attackSkill( Char target ) {
|
||||||
if (target.invisible > 0){
|
|
||||||
return 6;
|
|
||||||
} else {
|
|
||||||
return 18;
|
return 18;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int drRoll() {
|
public int drRoll() {
|
||||||
|
@ -346,18 +342,6 @@ public class NewTengu extends Mob {
|
||||||
@Override
|
@Override
|
||||||
public boolean act(boolean enemyInFOV, boolean justAlerted) {
|
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;
|
enemySeen = enemyInFOV;
|
||||||
if (enemyInFOV && !isCharmedBy( enemy ) && canAttack( enemy )) {
|
if (enemyInFOV && !isCharmedBy( enemy ) && canAttack( enemy )) {
|
||||||
|
|
||||||
|
@ -373,9 +357,16 @@ public class NewTengu extends Mob {
|
||||||
target = enemy.pos;
|
target = enemy.pos;
|
||||||
} else {
|
} else {
|
||||||
chooseEnemy();
|
chooseEnemy();
|
||||||
if (enemy != null) {
|
if (enemy == null){
|
||||||
|
//if nothing else can be targeted, target hero
|
||||||
|
enemy = Dungeon.hero;
|
||||||
|
}
|
||||||
target = enemy.pos;
|
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 );
|
spend( TICK );
|
||||||
|
@ -599,6 +590,7 @@ public class NewTengu extends Mob {
|
||||||
public static class BombBlob extends Blob {
|
public static class BombBlob extends Blob {
|
||||||
{
|
{
|
||||||
actPriority = BUFF_PRIO - 1;
|
actPriority = BUFF_PRIO - 1;
|
||||||
|
alwaysVisible = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -632,13 +624,11 @@ public class NewTengu extends Mob {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Dungeon.level.heroFOV[cell]) {
|
|
||||||
exploded = true;
|
exploded = true;
|
||||||
CellEmitter.center(cell).burst(BlastParticle.FACTORY, 2);
|
CellEmitter.center(cell).burst(BlastParticle.FACTORY, 2);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if (exploded){
|
if (exploded){
|
||||||
Sample.INSTANCE.play(Assets.SND_BLAST);
|
Sample.INSTANCE.play(Assets.SND_BLAST);
|
||||||
|
@ -799,6 +789,7 @@ public class NewTengu extends Mob {
|
||||||
|
|
||||||
{
|
{
|
||||||
actPriority = BUFF_PRIO - 1;
|
actPriority = BUFF_PRIO - 1;
|
||||||
|
alwaysVisible = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -831,13 +822,11 @@ public class NewTengu extends Mob {
|
||||||
GameScene.updateMap( cell );
|
GameScene.updateMap( cell );
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Dungeon.level.heroFOV[cell]){
|
|
||||||
burned = true;
|
burned = true;
|
||||||
CellEmitter.get(cell).start(FlameParticle.FACTORY, 0.03f, 10);
|
CellEmitter.get(cell).start(FlameParticle.FACTORY, 0.03f, 10);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if (observe) {
|
if (observe) {
|
||||||
Dungeon.observe();
|
Dungeon.observe();
|
||||||
|
@ -980,6 +969,7 @@ public class NewTengu extends Mob {
|
||||||
|
|
||||||
{
|
{
|
||||||
actPriority = BUFF_PRIO - 1;
|
actPriority = BUFF_PRIO - 1;
|
||||||
|
alwaysVisible = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -57,7 +57,7 @@ public class BlobEmitter extends Emitter {
|
||||||
for (int j = blob.area.top; j < blob.area.bottom; j++) {
|
for (int j = blob.area.top; j < blob.area.bottom; j++) {
|
||||||
cell = i + j*Dungeon.level.width();
|
cell = i + j*Dungeon.level.width();
|
||||||
if (cell < Dungeon.level.heroFOV.length
|
if (cell < Dungeon.level.heroFOV.length
|
||||||
&& Dungeon.level.heroFOV[cell]
|
&& (Dungeon.level.heroFOV[cell] || blob.alwaysVisible)
|
||||||
&& map[cell] > 0) {
|
&& map[cell] > 0) {
|
||||||
float x = (i + Random.Float()) * size;
|
float x = (i + Random.Float()) * size;
|
||||||
float y = (j + Random.Float()) * size;
|
float y = (j + Random.Float()) * size;
|
||||||
|
|
|
@ -589,7 +589,6 @@ actors.mobs.newtengu.name=Tengu
|
||||||
actors.mobs.newtengu.notice_gotcha=Gotcha, %s!
|
actors.mobs.newtengu.notice_gotcha=Gotcha, %s!
|
||||||
actors.mobs.newtengu.interesting=Let's make this interesting...
|
actors.mobs.newtengu.interesting=Let's make this interesting...
|
||||||
actors.mobs.newtengu.notice_have=I have you now, %s!
|
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.defeated=Free at last...
|
||||||
actors.mobs.newtengu.rankings_desc=Assassinated by the Tengu
|
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.
|
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.
|
||||||
|
|
Loading…
Reference in New Issue
Block a user