Program: 164277
Project: 164277
Buggy source:
public boolean[] updateFieldOfView(Char c){
  int cx=c.pos % WIDTH;
  int cy=c.pos / WIDTH;
  boolean sighted=c.buff(Blindness.class) == null && c.buff(Shadows.class) == null && c.buff(TimekeepersHourglass.timeStasis.class) == null && c.isAlive();
  if (sighted) {
    ShadowCaster.castShadow(cx,cy,fieldOfView,c.viewDistance);
  }
 else {
    Arrays.fill(fieldOfView,false);
  }
  int sense=1;
  if (c.isAlive()) {
    for (    Buff b : c.buffs(MindVision.class)) {
      sense=Math.max(((MindVision)b).distance,sense);
    }
  }
  if ((sighted && sense > 1) || !sighted) {
    int ax=Math.max(0,cx - sense);
    int bx=Math.min(cx + sense,WIDTH - 1);
    int ay=Math.max(0,cy - sense);
    int by=Math.min(cy + sense,HEIGHT - 1);
    int len=bx - ax + 1;
    int pos=ax + ay * WIDTH;
    for (int y=ay; y <= by; y++, pos+=WIDTH) {
      Arrays.fill(fieldOfView,pos,pos + len,true);
    }
    for (int i=0; i < LENGTH; i++) {
      fieldOfView[i]&=discoverable[i];
    }
  }
  if (c.isAlive()) {
    if (c.buff(MindVision.class) != null) {
      for (      Mob mob : mobs) {
        int p=mob.pos;
        fieldOfView[p]=true;
        fieldOfView[p + 1]=true;
        fieldOfView[p - 1]=true;
        fieldOfView[p + WIDTH + 1]=true;
        fieldOfView[p + WIDTH - 1]=true;
        fieldOfView[p - WIDTH + 1]=true;
        fieldOfView[p - WIDTH - 1]=true;
        fieldOfView[p + WIDTH]=true;
        fieldOfView[p - WIDTH]=true;
      }
    }
 else     if (c == Dungeon.hero && ((Hero)c).heroClass == HeroClass.HUNTRESS) {
      for (      Mob mob : mobs) {
        int p=mob.pos;
        if (distance(c.pos,p) == 2) {
          fieldOfView[p]=true;
          fieldOfView[p + 1]=true;
          fieldOfView[p - 1]=true;
          fieldOfView[p + WIDTH + 1]=true;
          fieldOfView[p + WIDTH - 1]=true;
          fieldOfView[p - WIDTH + 1]=true;
          fieldOfView[p - WIDTH - 1]=true;
          fieldOfView[p + WIDTH]=true;
          fieldOfView[p - WIDTH]=true;
        }
      }
    }
    if (c.buff(Awareness.class) != null) {
      for (      Heap heap : heaps.values()) {
        int p=heap.pos;
        fieldOfView[p]=true;
        fieldOfView[p + 1]=true;
        fieldOfView[p - 1]=true;
        fieldOfView[p + WIDTH + 1]=true;
        fieldOfView[p + WIDTH - 1]=true;
        fieldOfView[p - WIDTH + 1]=true;
        fieldOfView[p - WIDTH - 1]=true;
        fieldOfView[p + WIDTH]=true;
        fieldOfView[p - WIDTH]=true;
      }
    }
  }
  for (  Heap heap : heaps.values())   if (!heap.seen && fieldOfView[heap.pos])   heap.seen=true;
  return fieldOfView;
}

Fixed version (ground truth):
public boolean[] updateFieldOfView(Char c){
  int cx=c.pos % WIDTH;
  int cy=c.pos / WIDTH;
  boolean sighted=c.buff(Blindness.class) == null && c.buff(Shadows.class) == null && c.buff(TimekeepersHourglass.timeStasis.class) == null && c.isAlive();
  if (sighted) {
    ShadowCaster.castShadow(cx,cy,fieldOfView,c.viewDistance);
  }
 else {
    Arrays.fill(fieldOfView,false);
  }
  int sense=1;
  if (c.isAlive()) {
    for (    Buff b : c.buffs(MindVision.class)) {
      sense=Math.max(((MindVision)b).distance,sense);
    }
  }
  if ((sighted && sense > 1) || !sighted) {
    int ax=Math.max(0,cx - sense);
    int bx=Math.min(cx + sense,WIDTH - 1);
    int ay=Math.max(0,cy - sense);
    int by=Math.min(cy + sense,HEIGHT - 1);
    int len=bx - ax + 1;
    int pos=ax + ay * WIDTH;
    for (int y=ay; y <= by; y++, pos+=WIDTH) {
      Arrays.fill(fieldOfView,pos,pos + len,true);
    }
    for (int i=0; i < LENGTH; i++) {
      fieldOfView[i]&=discoverable[i];
    }
  }
  if (c.isAlive()) {
    if (c.buff(MindVision.class) != null) {
      for (      Mob mob : mobs) {
        int p=mob.pos;
        fieldOfView[p]=true;
        fieldOfView[p + 1]=true;
        fieldOfView[p - 1]=true;
        fieldOfView[p + WIDTH + 1]=true;
        fieldOfView[p + WIDTH - 1]=true;
        fieldOfView[p - WIDTH + 1]=true;
        fieldOfView[p - WIDTH - 1]=true;
        fieldOfView[p + WIDTH]=true;
        fieldOfView[p - WIDTH]=true;
      }
    }
 else     if (c == Dungeon.hero && ((Hero)c).heroClass == HeroClass.HUNTRESS) {
      for (      Mob mob : mobs) {
        int p=mob.pos;
        if (distance(c.pos,p) == 2) {
          fieldOfView[p]=true;
          fieldOfView[p + 1]=true;
          fieldOfView[p - 1]=true;
          fieldOfView[p + WIDTH + 1]=true;
          fieldOfView[p + WIDTH - 1]=true;
          fieldOfView[p - WIDTH + 1]=true;
          fieldOfView[p - WIDTH - 1]=true;
          fieldOfView[p + WIDTH]=true;
          fieldOfView[p - WIDTH]=true;
        }
      }
    }
    if (c.buff(Awareness.class) != null) {
      for (      Heap heap : heaps.values()) {
        int p=heap.pos;
        fieldOfView[p]=true;
        fieldOfView[p + 1]=true;
        fieldOfView[p - 1]=true;
        fieldOfView[p + WIDTH + 1]=true;
        fieldOfView[p + WIDTH - 1]=true;
        fieldOfView[p - WIDTH + 1]=true;
        fieldOfView[p - WIDTH - 1]=true;
        fieldOfView[p + WIDTH]=true;
        fieldOfView[p - WIDTH]=true;
      }
    }
  }
  for (  Heap heap : heaps.values())   if (!heap.seen && fieldOfView[heap.pos] && c == Dungeon.hero)   heap.seen=true;
  return fieldOfView;
}