@Override protected void evolve() { super.evolve(); if (volume > 0) { boolean mapUpdated = false; for (int i = 0; i < LENGTH; i++) { if (off[i] > 0) { int c = Dungeon.level.map[i]; int c1 = c; if (c == Terrain.EMPTY || c == Terrain.EMBERS || c == Terrain.EMPTY_DECO) { c1 = cur[i] > 9 ? Terrain.HIGH_GRASS : Terrain.GRASS; } else if (c == Terrain.GRASS && cur[i] > 9) { c1 = Terrain.HIGH_GRASS; } if (c1 != c) { Level.set(i, Terrain.HIGH_GRASS); mapUpdated = true; GameScene.updateMap(i); if (Dungeon.visible[i]) { GameScene.discoverTile(i, c); } } Char ch = Actor.findChar(i); if (ch != null) { Buff.prolong(ch, Roots.class, TICK); } } } if (mapUpdated) { Dungeon.observe(); } } }