v0.9.2a: mobs now awaken if they receive debuffs

This commit is contained in:
Evan Debenham 2021-03-05 18:37:05 -05:00
parent 5b8293db53
commit ea7e58bd2d

View File

@ -828,6 +828,14 @@ public abstract class Mob extends Char {
@Override
public boolean act( boolean enemyInFOV, boolean justAlerted ) {
//debuffs cause mobs to wake as well
for (Buff b : buffs()){
if (b.type == Buff.buffType.NEGATIVE){
awaken(enemyInFOV);
return true;
}
}
if (enemyInFOV) {
float enemyStealth = enemy.stealth();
@ -839,23 +847,7 @@ public abstract class Mob extends Char {
}
if (Random.Float( distance( enemy ) + enemyStealth ) < 1) {
enemySeen = true;
notice();
state = HUNTING;
target = enemy.pos;
if (alignment == Alignment.ENEMY && Dungeon.isChallenged(Challenges.SWARM_INTELLIGENCE)) {
for (Mob mob : Dungeon.level.mobs) {
if (mob.paralysed <= 0
&& Dungeon.level.distance(pos, mob.pos) <= 8
&& mob.state != mob.HUNTING) {
mob.beckon(target);
}
}
}
spend(TIME_TO_WAKE_UP);
awaken(enemyInFOV);
return true;
}
@ -866,6 +858,30 @@ public abstract class Mob extends Char {
return true;
}
protected void awaken( boolean enemyInFOV ){
if (enemyInFOV) {
enemySeen = true;
notice();
state = HUNTING;
target = enemy.pos;
} else {
notice();
state = WANDERING;
target = Dungeon.level.randomDestination( Mob.this );
}
if (alignment == Alignment.ENEMY && Dungeon.isChallenged(Challenges.SWARM_INTELLIGENCE)) {
for (Mob mob : Dungeon.level.mobs) {
if (mob.paralysed <= 0
&& Dungeon.level.distance(pos, mob.pos) <= 8
&& mob.state != mob.HUNTING) {
mob.beckon(target);
}
}
}
spend(TIME_TO_WAKE_UP);
}
}
protected class Wandering implements AiState {