diff --git a/core/src/main/assets/terrain_features.png b/core/src/main/assets/terrain_features.png index 80d8e1f2d..c0c4698a0 100644 Binary files a/core/src/main/assets/terrain_features.png and b/core/src/main/assets/terrain_features.png differ diff --git a/core/src/main/assets/tiles_caves.png b/core/src/main/assets/tiles_caves.png index f2358a76b..d3268a0ad 100644 Binary files a/core/src/main/assets/tiles_caves.png and b/core/src/main/assets/tiles_caves.png differ diff --git a/core/src/main/assets/tiles_city.png b/core/src/main/assets/tiles_city.png index 515dfc424..6802da255 100644 Binary files a/core/src/main/assets/tiles_city.png and b/core/src/main/assets/tiles_city.png differ diff --git a/core/src/main/assets/tiles_halls.png b/core/src/main/assets/tiles_halls.png index 07f3473fd..c8a3e502f 100644 Binary files a/core/src/main/assets/tiles_halls.png and b/core/src/main/assets/tiles_halls.png differ diff --git a/core/src/main/assets/tiles_prison.png b/core/src/main/assets/tiles_prison.png index 011036824..772e5d17c 100644 Binary files a/core/src/main/assets/tiles_prison.png and b/core/src/main/assets/tiles_prison.png differ diff --git a/core/src/main/assets/tiles_sewers.png b/core/src/main/assets/tiles_sewers.png index 24c66e35e..1ae8f11c5 100644 Binary files a/core/src/main/assets/tiles_sewers.png and b/core/src/main/assets/tiles_sewers.png differ diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/blobs/StormCloud.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/blobs/StormCloud.java index a80a5bafe..21dcac0e8 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/blobs/StormCloud.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/blobs/StormCloud.java @@ -44,7 +44,8 @@ public class StormCloud extends Blob { int terr = Dungeon.level.map[cell]; if (terr == Terrain.EMPTY || terr == Terrain.GRASS || terr == Terrain.EMBERS || terr == Terrain.EMPTY_SP || - terr == Terrain.HIGH_GRASS || terr == Terrain.EMPTY_DECO) { + terr == Terrain.HIGH_GRASS || terr == Terrain.FURROWED_GRASS + || terr == Terrain.EMPTY_DECO) { Level.set(cell, Terrain.WATER); GameScene.updateMap(cell); } else if (terr == Terrain.SECRET_TRAP || terr == Terrain.TRAP || terr == Terrain.INACTIVE_TRAP) { diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/bombs/RegrowthBomb.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/bombs/RegrowthBomb.java index 354a43be6..7886f6db4 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/bombs/RegrowthBomb.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/bombs/RegrowthBomb.java @@ -78,7 +78,8 @@ public class RegrowthBomb extends Bomb { Dungeon.level.map[i] == Terrain.EMBERS || Dungeon.level.map[i] == Terrain.EMPTY_DECO || Dungeon.level.map[i] == Terrain.GRASS || - Dungeon.level.map[i] == Terrain.HIGH_GRASS){ + Dungeon.level.map[i] == Terrain.HIGH_GRASS || + Dungeon.level.map[i] == Terrain.FURROWED_GRASS){ plantCandidates.add(i); } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/spells/AquaBlast.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/spells/AquaBlast.java index 22ae304f8..1052f5495 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/spells/AquaBlast.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/spells/AquaBlast.java @@ -55,7 +55,8 @@ public class AquaBlast extends TargetedSpell { int terr = Dungeon.level.map[cell + i]; if (terr == Terrain.EMPTY || terr == Terrain.GRASS || terr == Terrain.EMBERS || terr == Terrain.EMPTY_SP || - terr == Terrain.HIGH_GRASS || terr == Terrain.EMPTY_DECO) { + terr == Terrain.HIGH_GRASS || terr == Terrain.FURROWED_GRASS || + terr == Terrain.EMPTY_DECO) { Level.set(cell + i, Terrain.WATER); GameScene.updateMap(cell + i); } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/wands/CursedWand.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/wands/CursedWand.java index b4bc5b2dd..07b3a62f2 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/wands/CursedWand.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/wands/CursedWand.java @@ -128,14 +128,7 @@ public class CursedWand { case 1: cursedFX(user, bolt, new Callback() { public void call() { - int c = Dungeon.level.map[bolt.collisionPos]; - if (c == Terrain.EMPTY || - c == Terrain.EMBERS || - c == Terrain.EMPTY_DECO || - c == Terrain.GRASS || - c == Terrain.HIGH_GRASS) { - GameScene.add( Blob.seed(bolt.collisionPos, 30, Regrowth.class)); - } + GameScene.add( Blob.seed(bolt.collisionPos, 30, Regrowth.class)); wand.wandUsed(); } }); @@ -220,7 +213,8 @@ public class CursedWand { pos == Terrain.EMBERS || pos == Terrain.EMPTY_DECO || pos == Terrain.GRASS || - pos == Terrain.HIGH_GRASS) { + pos == Terrain.HIGH_GRASS || + pos == Terrain.FURROWED_GRASS) { Dungeon.level.plant((Plant.Seed) Generator.random(Generator.Category.SEED), pos); } wand.wandUsed(); @@ -358,14 +352,7 @@ public class CursedWand { //great forest fire! case 0: for (int i = 0; i < Dungeon.level.length(); i++){ - int c = Dungeon.level.map[i]; - if (c == Terrain.EMPTY || - c == Terrain.EMBERS || - c == Terrain.EMPTY_DECO || - c == Terrain.GRASS || - c == Terrain.HIGH_GRASS) { - GameScene.add( Blob.seed(i, 15, Regrowth.class)); - } + GameScene.add( Blob.seed(i, 15, Regrowth.class)); } do { GameScene.add(Blob.seed(Dungeon.level.randomDestination(), 10, Fire.class)); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/wands/WandOfRegrowth.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/wands/WandOfRegrowth.java index 20fbb17e8..bddef8501 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/wands/WandOfRegrowth.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/wands/WandOfRegrowth.java @@ -78,7 +78,8 @@ public class WandOfRegrowth extends Wand { c == Terrain.EMBERS || c == Terrain.EMPTY_DECO || c == Terrain.GRASS || - c == Terrain.HIGH_GRASS)) { + c == Terrain.HIGH_GRASS || + c == Terrain.FURROWED_GRASS)) { i.remove(); } } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/Level.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/Level.java index 90ce94694..955e18235 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/Level.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/Level.java @@ -711,6 +711,7 @@ public abstract class Level implements Bundlable { } if (map[pos] == Terrain.HIGH_GRASS || + map[pos] == Terrain.FURROWED_GRASS || map[pos] == Terrain.EMPTY || map[pos] == Terrain.EMBERS || map[pos] == Terrain.EMPTY_DECO) { @@ -800,6 +801,7 @@ public abstract class Level implements Bundlable { break; case Terrain.HIGH_GRASS: + case Terrain.FURROWED_GRASS: HighGrass.trample( this, cell, ch ); break; @@ -1002,6 +1004,8 @@ public abstract class Level implements Bundlable { return Messages.get(Level.class, "exit_name"); case Terrain.EMBERS: return Messages.get(Level.class, "embers_name"); + case Terrain.FURROWED_GRASS: + return Messages.get(Level.class, "furrowed_grass_name"); case Terrain.LOCKED_DOOR: return Messages.get(Level.class, "locked_door_name"); case Terrain.PEDESTAL: @@ -1049,6 +1053,7 @@ public abstract class Level implements Bundlable { case Terrain.EMBERS: return Messages.get(Level.class, "embers_desc"); case Terrain.HIGH_GRASS: + case Terrain.FURROWED_GRASS: return Messages.get(Level.class, "high_grass_desc"); case Terrain.LOCKED_DOOR: return Messages.get(Level.class, "locked_door_desc"); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/RegularLevel.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/RegularLevel.java index 5c78c60ac..5f693f363 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/RegularLevel.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/RegularLevel.java @@ -237,7 +237,7 @@ public abstract class RegularLevel extends Level { } for (Mob m : mobs){ - if (map[m.pos] == Terrain.HIGH_GRASS) { + if (map[m.pos] == Terrain.HIGH_GRASS || map[m.pos] == Terrain.FURROWED_GRASS) { map[m.pos] = Terrain.GRASS; losBlocking[m.pos] = false; } @@ -324,7 +324,7 @@ public abstract class RegularLevel extends Level { type = Heap.Type.HEAP; } int cell = randomDropCell(); - if (map[cell] == Terrain.HIGH_GRASS) { + if (map[cell] == Terrain.HIGH_GRASS || map[cell] == Terrain.FURROWED_GRASS) { map[cell] = Terrain.GRASS; losBlocking[cell] = false; } @@ -353,7 +353,7 @@ public abstract class RegularLevel extends Level { for (Item item : itemsToSpawn) { int cell = randomDropCell(); drop( item, cell ).type = Heap.Type.HEAP; - if (map[cell] == Terrain.HIGH_GRASS) { + if (map[cell] == Terrain.HIGH_GRASS || map[cell] == Terrain.FURROWED_GRASS) { map[cell] = Terrain.GRASS; losBlocking[cell] = false; } @@ -362,7 +362,7 @@ public abstract class RegularLevel extends Level { Item item = Bones.get(); if (item != null) { int cell = randomDropCell(); - if (map[cell] == Terrain.HIGH_GRASS) { + if (map[cell] == Terrain.HIGH_GRASS || map[cell] == Terrain.FURROWED_GRASS) { map[cell] = Terrain.GRASS; losBlocking[cell] = false; } @@ -389,7 +389,7 @@ public abstract class RegularLevel extends Level { GuidePage p = new GuidePage(); p.page(missingPages.get(0)); int cell = randomDropCell(); - if (map[cell] == Terrain.HIGH_GRASS) { + if (map[cell] == Terrain.HIGH_GRASS || map[cell] == Terrain.FURROWED_GRASS) { map[cell] = Terrain.GRASS; losBlocking[cell] = false; } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/Terrain.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/Terrain.java index d2d4b6cc8..5a8c81bb0 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/Terrain.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/Terrain.java @@ -39,6 +39,7 @@ public class Terrain { public static final int BARRICADE = 13; public static final int EMPTY_SP = 14; public static final int HIGH_GRASS = 15; + public static final int FURROWED_GRASS = 30; public static final int SECRET_DOOR = 16; public static final int SECRET_TRAP = 17; @@ -85,6 +86,7 @@ public class Terrain { flags[BARRICADE] = FLAMABLE | SOLID | LOS_BLOCKING; flags[EMPTY_SP] = flags[EMPTY]; flags[HIGH_GRASS] = PASSABLE | LOS_BLOCKING | FLAMABLE; + flags[FURROWED_GRASS]= flags[HIGH_GRASS]; flags[SECRET_DOOR] = flags[WALL] | SECRET; flags[SECRET_TRAP] = flags[EMPTY] | SECRET; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/features/HighGrass.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/features/HighGrass.java index c8e8123ef..16d57e5ac 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/features/HighGrass.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/features/HighGrass.java @@ -42,53 +42,72 @@ import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene; import com.watabou.utils.Random; public class HighGrass { + + //prevents items dropped from grass, from trampling that same grass. + //yes this is a bit ugly, oh well. + private static boolean freezeTrample = false; public static void trample( Level level, int pos, Char ch ) { - if (ch instanceof Hero && ((Hero) ch).heroClass == HeroClass.HUNTRESS){ - //Level.set(pos, Terrain.FURROWED_GRASS); - Level.set(pos, Terrain.GRASS); - } else { - Level.set(pos, Terrain.GRASS); - } - GameScene.updateMap( pos ); + if (freezeTrample) return; - int naturalismLevel = 0; - - if (ch != null) { - SandalsOfNature.Naturalism naturalism = ch.buff( SandalsOfNature.Naturalism.class ); - if (naturalism != null) { - if (!naturalism.isCursed()) { - naturalismLevel = naturalism.itemLevel() + 1; - naturalism.charge(); - } else { - naturalismLevel = -1; + if (level.map[pos] == Terrain.FURROWED_GRASS){ + if (ch instanceof Hero && ((Hero) ch).heroClass == HeroClass.HUNTRESS){ + //Do nothing + freezeTrample = true; + } else { + Level.set(pos, Terrain.GRASS); + } + + } else { + if (ch instanceof Hero && ((Hero) ch).heroClass == HeroClass.HUNTRESS){ + Level.set(pos, Terrain.FURROWED_GRASS); + freezeTrample = true; + } else { + Level.set(pos, Terrain.GRASS); + } + + int naturalismLevel = 0; + + if (ch != null) { + SandalsOfNature.Naturalism naturalism = ch.buff( SandalsOfNature.Naturalism.class ); + if (naturalism != null) { + if (!naturalism.isCursed()) { + naturalismLevel = naturalism.itemLevel() + 1; + naturalism.charge(); + } else { + naturalismLevel = -1; + } } } - } - - if (naturalismLevel >= 0) { - // Seed, scales from 1/20 to 1/4 - if (Random.Int(20 - (naturalismLevel * 4)) == 0) { - Item seed = Generator.random(Generator.Category.SEED); - - if (seed instanceof BlandfruitBush.Seed) { - if (Random.Int(3) - Dungeon.LimitedDrops.BLANDFRUIT_SEED.count >= 0) { + + if (naturalismLevel >= 0) { + // Seed, scales from 1/20 to 1/4 + if (Random.Int(20 - (naturalismLevel * 4)) == 0) { + Item seed = Generator.random(Generator.Category.SEED); + + if (seed instanceof BlandfruitBush.Seed) { + if (Random.Int(3) - Dungeon.LimitedDrops.BLANDFRUIT_SEED.count >= 0) { + level.drop(seed, pos).sprite.drop(); + Dungeon.LimitedDrops.BLANDFRUIT_SEED.count++; + } + } else level.drop(seed, pos).sprite.drop(); - Dungeon.LimitedDrops.BLANDFRUIT_SEED.count++; - } - } else - level.drop(seed, pos).sprite.drop(); - } - - // Dew, scales from 1/6 to 1/3 - if (Random.Int(24 - naturalismLevel*3) <= 3) { - level.drop(new Dewdrop(), pos).sprite.drop(); + } + + // Dew, scales from 1/6 to 1/3 + if (Random.Int(24 - naturalismLevel*3) <= 3) { + level.drop(new Dewdrop(), pos).sprite.drop(); + } } + } + + freezeTrample = false; + + GameScene.updateMap( pos ); int leaves = 4; - if (ch instanceof Hero) { Hero hero = (Hero)ch; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/tiles/DungeonTerrainTilemap.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/tiles/DungeonTerrainTilemap.java index 75099424a..e6228eede 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/tiles/DungeonTerrainTilemap.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/tiles/DungeonTerrainTilemap.java @@ -80,6 +80,10 @@ public class DungeonTerrainTilemap extends DungeonTilemap { return DungeonTileSheet.getVisualWithAlts( DungeonTileSheet.RAISED_HIGH_GRASS, pos); + } else if (tile == Terrain.FURROWED_GRASS) { + return DungeonTileSheet.getVisualWithAlts( + DungeonTileSheet.RAISED_FURROWED_GRASS, + pos); } else { return DungeonTileSheet.NULL_TILE; } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/tiles/DungeonTileSheet.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/tiles/DungeonTileSheet.java index 45565f024..4109004b2 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/tiles/DungeonTileSheet.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/tiles/DungeonTileSheet.java @@ -81,7 +81,7 @@ public class DungeonTileSheet { public static HashSet waterStitcheable = new HashSet<>(Arrays.asList( Terrain.EMPTY, Terrain.GRASS, Terrain.EMPTY_WELL, Terrain.ENTRANCE, Terrain.EXIT, Terrain.EMBERS, - Terrain.BARRICADE, Terrain.HIGH_GRASS, Terrain.SECRET_TRAP, + Terrain.BARRICADE, Terrain.HIGH_GRASS, Terrain.FURROWED_GRASS, Terrain.SECRET_TRAP, Terrain.TRAP, Terrain.INACTIVE_TRAP, Terrain.EMPTY_DECO, Terrain.SIGN, Terrain.WELL, Terrain.STATUE, Terrain.ALCHEMY, Terrain.DOOR, Terrain.OPEN_DOOR, Terrain.LOCKED_DOOR @@ -123,6 +123,7 @@ public class DungeonTileSheet { chasmStitcheable.put( Terrain.EMBERS, CHASM_FLOOR ); chasmStitcheable.put( Terrain.EMPTY_WELL, CHASM_FLOOR ); chasmStitcheable.put( Terrain.HIGH_GRASS, CHASM_FLOOR ); + chasmStitcheable.put( Terrain.FURROWED_GRASS,CHASM_FLOOR ); chasmStitcheable.put( Terrain.EMPTY_DECO, CHASM_FLOOR ); chasmStitcheable.put( Terrain.SIGN, CHASM_FLOOR ); chasmStitcheable.put( Terrain.EMPTY_WELL, CHASM_FLOOR ); @@ -182,8 +183,10 @@ public class DungeonTileSheet { public static final int FLAT_ALCHEMY_POT = FLAT_OTHER+3; public static final int FLAT_BARRICADE = FLAT_OTHER+4; public static final int FLAT_HIGH_GRASS = FLAT_OTHER+5; + public static final int FLAT_FURROWED_GRASS = FLAT_OTHER+6; - public static final int FLAT_HIGH_GRASS_ALT = FLAT_OTHER+7; + public static final int FLAT_HIGH_GRASS_ALT = FLAT_OTHER+8; + public static final int FLAT_FURROWED_ALT = FLAT_OTHER+9; /********************************************************************** @@ -269,8 +272,10 @@ public class DungeonTileSheet { public static final int RAISED_ALCHEMY_POT = RAISED_OTHER+3; public static final int RAISED_BARRICADE = RAISED_OTHER+4; public static final int RAISED_HIGH_GRASS = RAISED_OTHER+5; + public static final int RAISED_FURROWED_GRASS = RAISED_OTHER+6; - public static final int RAISED_HIGH_GRASS_ALT = RAISED_OTHER+7; + public static final int RAISED_HIGH_GRASS_ALT = RAISED_OTHER+9; + public static final int RAISED_FURROWED_ALT = RAISED_OTHER+10; @@ -324,12 +329,14 @@ public class DungeonTileSheet { public static final int DOOR_SIDEWAYS = WALL_OVERHANG+23; public static final int DOOR_SIDEWAYS_LOCKED = WALL_OVERHANG+24; - public static final int STATUE_OVERHANG = WALL_OVERHANG+26; - public static final int ALCHEMY_POT_OVERHANG = WALL_OVERHANG+27; - public static final int BARRICADE_OVERHANG = WALL_OVERHANG+28; - public static final int HIGH_GRASS_OVERHANG = WALL_OVERHANG+29; + public static final int STATUE_OVERHANG = WALL_OVERHANG+32; + public static final int ALCHEMY_POT_OVERHANG = WALL_OVERHANG+33; + public static final int BARRICADE_OVERHANG = WALL_OVERHANG+34; + public static final int HIGH_GRASS_OVERHANG = WALL_OVERHANG+35; + public static final int FURROWED_OVERHANG = WALL_OVERHANG+36; - public static final int HIGH_GRASS_OVERHANG_ALT = WALL_OVERHANG+31; + public static final int HIGH_GRASS_OVERHANG_ALT = WALL_OVERHANG+38; + public static final int FURROWED_OVERHANG_ALT = WALL_OVERHANG+39; /********************************************************************** * Logic for the selection of tile visuals @@ -373,6 +380,7 @@ public class DungeonTileSheet { directFlatVisuals.put(Terrain.ALCHEMY, FLAT_ALCHEMY_POT); directFlatVisuals.put(Terrain.BARRICADE, FLAT_BARRICADE); directFlatVisuals.put(Terrain.HIGH_GRASS, FLAT_HIGH_GRASS); + directFlatVisuals.put(Terrain.FURROWED_GRASS, FLAT_FURROWED_GRASS); directFlatVisuals.put(Terrain.SECRET_DOOR, directFlatVisuals.get(Terrain.WALL)); } @@ -405,13 +413,16 @@ public class DungeonTileSheet { commonAltVisuals.put(FLAT_BOOKSHELF, FLAT_BOOKSHELF_ALT); commonAltVisuals.put(FLAT_HIGH_GRASS, FLAT_HIGH_GRASS_ALT); + commonAltVisuals.put(FLAT_FURROWED_GRASS, FLAT_FURROWED_ALT); commonAltVisuals.put(RAISED_WALL, RAISED_WALL_ALT); commonAltVisuals.put(RAISED_WALL_DECO, RAISED_WALL_DECO_ALT); commonAltVisuals.put(RAISED_WALL_BOOKSHELF, RAISED_WALL_BOOKSHELF_ALT); commonAltVisuals.put(RAISED_HIGH_GRASS, RAISED_HIGH_GRASS_ALT); + commonAltVisuals.put(RAISED_FURROWED_GRASS, RAISED_FURROWED_ALT); commonAltVisuals.put(HIGH_GRASS_OVERHANG, HIGH_GRASS_OVERHANG_ALT); + commonAltVisuals.put(FURROWED_OVERHANG, FURROWED_OVERHANG_ALT); } //These alt visuals trigger 5% of the time (and also override common alts when they show up) diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/tiles/DungeonWallsTilemap.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/tiles/DungeonWallsTilemap.java index 9e639b5fb..73ceb8c7d 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/tiles/DungeonWallsTilemap.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/tiles/DungeonWallsTilemap.java @@ -81,6 +81,8 @@ public class DungeonWallsTilemap extends DungeonTilemap { return DungeonTileSheet.BARRICADE_OVERHANG; } else if (pos + mapWidth < size && map[pos+mapWidth] == Terrain.HIGH_GRASS){ return DungeonTileSheet.getVisualWithAlts(DungeonTileSheet.HIGH_GRASS_OVERHANG, pos + mapWidth); + } else if (pos + mapWidth < size && map[pos+mapWidth] == Terrain.FURROWED_GRASS){ + return DungeonTileSheet.getVisualWithAlts(DungeonTileSheet.FURROWED_OVERHANG, pos + mapWidth); } return -1; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/tiles/GridTileMap.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/tiles/GridTileMap.java index 806ebe480..526310803 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/tiles/GridTileMap.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/tiles/GridTileMap.java @@ -45,7 +45,7 @@ public class GridTileMap extends DungeonTilemap { protected int getTileVisual(int pos, int tile, boolean flat) { if (gridSetting == -1 || (pos % mapWidth) % 2 != (pos / mapWidth) % 2){ return -1; - } else if (DungeonTileSheet.floorTile(tile) || tile == Terrain.HIGH_GRASS) { + } else if (DungeonTileSheet.floorTile(tile) || tile == Terrain.HIGH_GRASS || tile == Terrain.FURROWED_GRASS) { return gridSetting; } else if (DungeonTileSheet.doorTile(tile)){ if (DungeonTileSheet.wallStitcheable(map[pos - mapWidth])){ diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/tiles/RaisedTerrainTilemap.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/tiles/RaisedTerrainTilemap.java index 2fb65ded4..cdc1b05dd 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/tiles/RaisedTerrainTilemap.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/tiles/RaisedTerrainTilemap.java @@ -39,9 +39,14 @@ public class RaisedTerrainTilemap extends DungeonTilemap { if (tile == Terrain.HIGH_GRASS){ return DungeonTileSheet.getVisualWithAlts( DungeonTileSheet.RAISED_HIGH_GRASS, - pos) + 1; + pos) + 2; + } else if (tile == Terrain.FURROWED_GRASS){ + return DungeonTileSheet.getVisualWithAlts( + DungeonTileSheet.RAISED_FURROWED_GRASS, + pos) + 2; } + return -1; } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/tiles/TerrainFeaturesTilemap.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/tiles/TerrainFeaturesTilemap.java index 09de53b2a..d66606e5b 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/tiles/TerrainFeaturesTilemap.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/tiles/TerrainFeaturesTilemap.java @@ -68,10 +68,13 @@ public class TerrainFeaturesTilemap extends DungeonTilemap { if (Dungeon.depth == 21) stage--; if (tile == Terrain.HIGH_GRASS){ return 9 + 16*stage + (DungeonTileSheet.tileVariance[pos] >= 50 ? 1 : 0); - } else if (tile == Terrain.GRASS) { + } else if (tile == Terrain.FURROWED_GRASS){ + //TODO return 11 + 16*stage + (DungeonTileSheet.tileVariance[pos] >= 50 ? 1 : 0); + } else if (tile == Terrain.GRASS) { + return 13 + 16*stage + (DungeonTileSheet.tileVariance[pos] >= 50 ? 1 : 0); } else if (tile == Terrain.EMBERS) { - return 13 + (DungeonTileSheet.tileVariance[pos] >= 50 ? 1 : 0); + return 9 * (16*5) + (DungeonTileSheet.tileVariance[pos] >= 50 ? 1 : 0); } return -1; diff --git a/core/src/main/resources/com/shatteredpixel/shatteredpixeldungeon/messages/levels/levels.properties b/core/src/main/resources/com/shatteredpixel/shatteredpixeldungeon/messages/levels/levels.properties index 778c1b6ae..9814061f8 100644 --- a/core/src/main/resources/com/shatteredpixel/shatteredpixeldungeon/messages/levels/levels.properties +++ b/core/src/main/resources/com/shatteredpixel/shatteredpixeldungeon/messages/levels/levels.properties @@ -160,6 +160,7 @@ levels.level.open_door_name=Open door levels.level.entrace_name=Depth entrance levels.level.exit_name=Depth exit levels.level.embers_name=Embers +levels.level.furrowed_grass_name=Furrowed vegetation levels.level.locked_door_name=Locked door levels.level.pedestal_name=Pedestal levels.level.barricade_name=Barricade