diff --git a/core/src/main/assets/environment/tiles_caves.png b/core/src/main/assets/environment/tiles_caves.png index 1809edecf..578462edd 100644 Binary files a/core/src/main/assets/environment/tiles_caves.png and b/core/src/main/assets/environment/tiles_caves.png differ diff --git a/core/src/main/assets/environment/tiles_city.png b/core/src/main/assets/environment/tiles_city.png index 862e8a7cd..8ec92c092 100644 Binary files a/core/src/main/assets/environment/tiles_city.png and b/core/src/main/assets/environment/tiles_city.png differ diff --git a/core/src/main/assets/environment/tiles_halls.png b/core/src/main/assets/environment/tiles_halls.png index 1cc8928cf..560d508ff 100644 Binary files a/core/src/main/assets/environment/tiles_halls.png and b/core/src/main/assets/environment/tiles_halls.png differ diff --git a/core/src/main/assets/environment/tiles_prison.png b/core/src/main/assets/environment/tiles_prison.png index ceadcbc72..ed0bf7a54 100644 Binary files a/core/src/main/assets/environment/tiles_prison.png and b/core/src/main/assets/environment/tiles_prison.png differ diff --git a/core/src/main/assets/environment/tiles_sewers.png b/core/src/main/assets/environment/tiles_sewers.png index 28eb7e02c..1fc5959a0 100644 Binary files a/core/src/main/assets/environment/tiles_sewers.png and b/core/src/main/assets/environment/tiles_sewers.png differ diff --git a/core/src/main/assets/messages/levels/levels.properties b/core/src/main/assets/messages/levels/levels.properties index 1aa0c4d30..907a53b3f 100644 --- a/core/src/main/assets/messages/levels/levels.properties +++ b/core/src/main/assets/messages/levels/levels.properties @@ -200,7 +200,6 @@ levels.level.barricade_name=Barricade levels.level.high_grass_name=High grass levels.level.locked_exit_name=Locked depth exit levels.level.unlocked_exit_name=Unlocked depth exit -levels.level.sign_name=Sign levels.level.well_name=Well levels.level.empty_well_name=Empty well levels.level.statue_name=Statue @@ -218,7 +217,6 @@ levels.level.locked_door_desc=This door is locked, you need a matching key to un levels.level.crystal_door_desc=This locked door is made of magical crystal. You can see through, but you'll need a crystal key to open it. levels.level.locked_exit_desc=Heavy bars block the stairs leading down. levels.level.barricade_desc=The wooden barricade is firmly set but has dried over the years. Might it burn? -levels.level.sign_desc=You can't read the text from here. levels.level.inactive_trap_desc=The trap has been triggered before and it's not dangerous anymore. levels.level.statue_desc=Someone wanted to adorn this place, but failed, obviously. levels.level.alchemy_desc=This pot is filled with magical water. Items can be mixed into the pot to create something new! 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 cd1ac4a03..97505f22f 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/Level.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/Level.java @@ -1475,8 +1475,6 @@ public abstract class Level implements Bundlable { return Messages.get(Level.class, "locked_exit_name"); case Terrain.UNLOCKED_EXIT: return Messages.get(Level.class, "unlocked_exit_name"); - case Terrain.SIGN: - return Messages.get(Level.class, "sign_name"); case Terrain.WELL: return Messages.get(Level.class, "well_name"); case Terrain.EMPTY_WELL: @@ -1520,8 +1518,6 @@ public abstract class Level implements Bundlable { return Messages.get(Level.class, "locked_exit_desc"); case Terrain.BARRICADE: return Messages.get(Level.class, "barricade_desc"); - case Terrain.SIGN: - return Messages.get(Level.class, "sign_desc"); case Terrain.INACTIVE_TRAP: return Messages.get(Level.class, "inactive_trap_desc"); case Terrain.STATUE: 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 478cba130..5915e012d 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/Terrain.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/Terrain.java @@ -50,7 +50,7 @@ public class Terrain { public static final int EMPTY_DECO = 20; public static final int LOCKED_EXIT = 21; public static final int UNLOCKED_EXIT = 22; - public static final int SIGN = 23; + public static final int SIGN = 23; //currently used purely for custom tile visuals public static final int WELL = 24; public static final int STATUE = 25; public static final int STATUE_SP = 26; @@ -118,14 +118,4 @@ public class Terrain { } } - //removes signs, places floors instead - public static int[] convertTilesFrom0_6_0b(int[] map){ - for (int i = 0; i < map.length; i++){ - if (map[i] == 23){ - map[i] = 1; - } - } - return map; - } - } 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 5f385e8b6..c8959d207 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/tiles/DungeonTerrainTilemap.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/tiles/DungeonTerrainTilemap.java @@ -66,8 +66,6 @@ public class DungeonTerrainTilemap extends DungeonTilemap { pos + mapWidth < size ? map[pos + mapWidth] : -1, pos % mapWidth != 0 ? map[pos - 1] : -1 ); - } else if (tile == Terrain.SIGN) { - return DungeonTileSheet.RAISED_SIGN; } else if (tile == Terrain.STATUE) { return DungeonTileSheet.RAISED_STATUE; } else if (tile == Terrain.STATUE_SP) { 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 615e07a35..75cb54a65 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/tiles/DungeonTileSheet.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/tiles/DungeonTileSheet.java @@ -47,7 +47,7 @@ public class DungeonTileSheet { * Floor Tiles **********************************************************************/ - private static final int GROUND = xy(1, 1); //32 slots + private static final int GROUND = xy(1, 1); //24 slots public static final int FLOOR = GROUND +0; public static final int FLOOR_DECO = GROUND +1; public static final int GRASS = GROUND +2; @@ -68,51 +68,12 @@ public class DungeonTileSheet { public static final int EMPTY_WELL = GROUND +19; public static final int PEDESTAL = GROUND +20; - - - /********************************************************************** - * Water Tiles - **********************************************************************/ - - public static final int WATER = xy(1, 3); //16 slots - //next 15 slots are all water stitching with ground. - - //These tiles can stitch with water - 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.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, Terrain.CRYSTAL_DOOR - )); - - //+1 for ground above, +2 for ground right, +4 for ground below, +8 for ground left. - public static int stitchWaterTile(int top, int right, int bottom, int left){ - int result = WATER; - if (waterStitcheable.contains(top)) result += 1; - if (waterStitcheable.contains(right)) result += 2; - if (waterStitcheable.contains(bottom)) result += 4; - if (waterStitcheable.contains(left)) result += 8; - return result; - } - - - public static boolean floorTile(int tile){ - return tile == Terrain.WATER || directVisuals.get(tile, CHASM) < CHASM; - } - - - /********************************************************************** - * Chasm Tiles - **********************************************************************/ - - public static final int CHASM = xy(1, 4); //16 tiles + public static final int CHASM = xy(9, 2); //8 slots //chasm stitching visuals... - public static final int CHASM_FLOOR = CHASM+1; - public static final int CHASM_FLOOR_SP = CHASM+2; - public static final int CHASM_WALL = CHASM+3; - public static final int CHASM_WATER = CHASM+4; + public static final int CHASM_FLOOR = CHASM+1; + public static final int CHASM_FLOOR_SP = CHASM+2; + public static final int CHASM_WALL = CHASM+3; + public static final int CHASM_WATER = CHASM+4; //tiles that can stitch with chasms (from above), and which visual represents the stitching public static SparseArray chasmStitcheable = new SparseArray<>(); @@ -156,11 +117,44 @@ public class DungeonTileSheet { return chasmStitcheable.get(above, CHASM); } + + /********************************************************************** + * Water Tiles + **********************************************************************/ + + public static final int WATER = xy(1, 3); //16 slots + //next 15 slots are all water stitching with ground. + + //These tiles can stitch with water + 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.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, Terrain.CRYSTAL_DOOR + )); + + //+1 for ground above, +2 for ground right, +4 for ground below, +8 for ground left. + public static int stitchWaterTile(int top, int right, int bottom, int left){ + int result = WATER; + if (waterStitcheable.contains(top)) result += 1; + if (waterStitcheable.contains(right)) result += 2; + if (waterStitcheable.contains(bottom)) result += 4; + if (waterStitcheable.contains(left)) result += 8; + return result; + } + + public static boolean floorTile(int tile){ + return tile == Terrain.WATER || directVisuals.get(tile, CHASM) < CHASM; + } + + /********************************************************************** Flat Tiles **********************************************************************/ - private static final int FLAT_WALLS = xy(1, 5); //16 slots + private static final int FLAT_WALLS = xy(1, 4); //16 slots public static final int FLAT_WALL = FLAT_WALLS+0; public static final int FLAT_WALL_DECO = FLAT_WALLS+1; public static final int FLAT_BOOKSHELF = FLAT_WALLS+2; @@ -176,24 +170,24 @@ public class DungeonTileSheet { public static final int UNLOCKED_EXIT = FLAT_WALLS+12; public static final int LOCKED_EXIT = FLAT_WALLS+13; - public static final int FLAT_OTHER = xy(1, 6); //16 slots - public static final int FLAT_SIGN = FLAT_OTHER+0; - public static final int FLAT_STATUE = FLAT_OTHER+1; - public static final int FLAT_STATUE_SP = FLAT_OTHER+2; - 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_OTHER = xy(1, 5); //16 slots + public static final int FLAT_ALCHEMY_POT = FLAT_OTHER+0; + public static final int FLAT_BARRICADE = FLAT_OTHER+1; + public static final int FLAT_HIGH_GRASS = FLAT_OTHER+2; + public static final int FLAT_FURROWED_GRASS = FLAT_OTHER+3; - public static final int FLAT_HIGH_GRASS_ALT = FLAT_OTHER+8; - public static final int FLAT_FURROWED_ALT = FLAT_OTHER+9; + public static final int FLAT_HIGH_GRASS_ALT = FLAT_OTHER+5; + public static final int FLAT_FURROWED_ALT = FLAT_OTHER+6; + + public static final int FLAT_STATUE = FLAT_OTHER+8; + public static final int FLAT_STATUE_SP = FLAT_OTHER+9; /********************************************************************** * Raised Tiles, Lower Layer **********************************************************************/ - private static final int RAISED_WALLS = xy(1, 7); //32 slots + private static final int RAISED_WALLS = xy(1, 6); //32 slots //+1 for open to the right, +2 for open to the left public static final int RAISED_WALL = RAISED_WALLS+0; public static final int RAISED_WALL_DECO = RAISED_WALLS+4; @@ -238,7 +232,7 @@ public class DungeonTileSheet { return result; } - private static final int RAISED_DOORS = xy(1, 9); //16 slots + private static final int RAISED_DOORS = xy(1, 8); //8 slots public static final int RAISED_DOOR = RAISED_DOORS+0; public static final int RAISED_DOOR_OPEN = RAISED_DOORS+1; public static final int RAISED_DOOR_LOCKED = RAISED_DOORS+2; @@ -267,25 +261,17 @@ public class DungeonTileSheet { return false; } - private static final int RAISED_OTHER = xy(1, 10); //16 slots - public static final int RAISED_SIGN = RAISED_OTHER+0; - public static final int RAISED_STATUE = RAISED_OTHER+1; - public static final int RAISED_STATUE_SP = RAISED_OTHER+2; - 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; + private static final int RAISED_OTHER = xy(9, 8); //24 slots + public static final int RAISED_ALCHEMY_POT = RAISED_OTHER+0; + public static final int RAISED_BARRICADE = RAISED_OTHER+1; + public static final int RAISED_HIGH_GRASS = RAISED_OTHER+2; + public static final int RAISED_FURROWED_GRASS = RAISED_OTHER+3; - //these are part of a layer that appears above characters, despite not being part of overhang - public static final int RAISED_HIGH_GRASS_OVER = RAISED_OTHER+7; - public static final int RAISED_FURROWED_GRASS_OVER = RAISED_OTHER+8; + public static final int RAISED_HIGH_GRASS_ALT = RAISED_OTHER+5; + public static final int RAISED_FURROWED_ALT = RAISED_OTHER+6; - public static final int RAISED_HIGH_GRASS_ALT = RAISED_OTHER+9; - public static final int RAISED_FURROWED_ALT = RAISED_OTHER+10; - - //these are part of a layer that appears above characters, despite not being part of overhang - public static final int RAISED_HIGH_GRASS_OVER_ALT = RAISED_OTHER+11; - public static final int RAISED_FURROWED_OVER_ALT = RAISED_OTHER+12; + public static final int RAISED_STATUE = RAISED_OTHER+8; + public static final int RAISED_STATUE_SP = RAISED_OTHER+9; /********************************************************************** @@ -293,7 +279,7 @@ public class DungeonTileSheet { **********************************************************************/ //+1 for open right, +2 for open right-below, +4 for open left-below, +8 for open left. - public static final int WALLS_INTERNAL = xy(1, 11); //48 slots + public static final int WALLS_INTERNAL = xy(1, 10); //48 slots private static final int WALL_INTERNAL = WALLS_INTERNAL+0; private static final int WALL_INTERNAL_DECO = WALLS_INTERNAL+16; private static final int WALL_INTERNAL_WOODEN = WALLS_INTERNAL+32; @@ -314,7 +300,7 @@ public class DungeonTileSheet { } //+1 for open to the down-right, +2 for open to the down-left - private static final int WALLS_OVERHANG = xy(1, 14); //32 slots + private static final int WALLS_OVERHANG = xy(1, 13); //32 slots public static final int WALL_OVERHANG = WALLS_OVERHANG+0; public static final int WALL_OVERHANG_DECO = WALLS_OVERHANG+4; public static final int WALL_OVERHANG_WOODEN = WALLS_OVERHANG+8; @@ -340,24 +326,33 @@ public class DungeonTileSheet { return visual; } - private static final int OTHER_OVERHANG = xy(1, 16); //16 slots - public static final int STATUE_OVERHANG = OTHER_OVERHANG+0; - public static final int ALCHEMY_POT_OVERHANG = OTHER_OVERHANG+1; - public static final int BARRICADE_OVERHANG = OTHER_OVERHANG+2; - public static final int HIGH_GRASS_OVERHANG = OTHER_OVERHANG+3; - public static final int FURROWED_OVERHANG = OTHER_OVERHANG+4; - - public static final int HIGH_GRASS_OVERHANG_ALT = OTHER_OVERHANG+6; - public static final int FURROWED_OVERHANG_ALT = OTHER_OVERHANG+7; - - public static final int DOOR_OVERHANG = OTHER_OVERHANG+9; - public static final int DOOR_OVERHANG_OPEN = OTHER_OVERHANG+10; - public static final int DOOR_OVERHANG_CRYSTAL = OTHER_OVERHANG+11; - public static final int DOOR_SIDEWAYS = OTHER_OVERHANG+12; - public static final int DOOR_SIDEWAYS_LOCKED = OTHER_OVERHANG+13; - public static final int DOOR_SIDEWAYS_CRYSTAL = OTHER_OVERHANG+14; + public static final int DOOR_OVERHANG = xy(1, 15); //8 slots + public static final int DOOR_OVERHANG_OPEN = DOOR_OVERHANG+1; + public static final int DOOR_OVERHANG_CRYSTAL = DOOR_OVERHANG+2; + public static final int DOOR_SIDEWAYS = DOOR_OVERHANG+3; + public static final int DOOR_SIDEWAYS_LOCKED = DOOR_OVERHANG+4; + public static final int DOOR_SIDEWAYS_CRYSTAL = DOOR_OVERHANG+5; //exit visuals are rendered flat atm, so they actually underhang - public static final int EXIT_UNDERHANG = OTHER_OVERHANG+15; + public static final int EXIT_UNDERHANG = DOOR_OVERHANG+6; + + + private static final int OTHER_OVERHANG = xy(9, 15); //24 slots + public static final int ALCHEMY_POT_OVERHANG = OTHER_OVERHANG+0; + public static final int BARRICADE_OVERHANG = OTHER_OVERHANG+1; + public static final int HIGH_GRASS_OVERHANG = OTHER_OVERHANG+2; + public static final int FURROWED_OVERHANG = OTHER_OVERHANG+3; + + public static final int HIGH_GRASS_OVERHANG_ALT = OTHER_OVERHANG+5; + public static final int FURROWED_OVERHANG_ALT = OTHER_OVERHANG+6; + + public static final int STATUE_OVERHANG = OTHER_OVERHANG+8; + public static final int STATUE_SP_OVERHANG = OTHER_OVERHANG+9; + + public static final int HIGH_GRASS_UNDERHANG = OTHER_OVERHANG+18; + public static final int FURROWED_UNDERHANG = OTHER_OVERHANG+19; + + public static final int HIGH_GRASS_UNDERHANG_ALT = OTHER_OVERHANG+21; + public static final int FURROWED_UNDERHANG_ALT = OTHER_OVERHANG+22; /********************************************************************** * Logic for the selection of tile visuals @@ -396,14 +391,14 @@ public class DungeonTileSheet { directFlatVisuals.put(Terrain.CRYSTAL_DOOR, FLAT_DOOR_CRYSTAL); directFlatVisuals.put(Terrain.WALL_DECO, FLAT_WALL_DECO); directFlatVisuals.put(Terrain.BOOKSHELF, FLAT_BOOKSHELF); - directFlatVisuals.put(Terrain.SIGN, FLAT_SIGN); - directFlatVisuals.put(Terrain.STATUE, FLAT_STATUE); - directFlatVisuals.put(Terrain.STATUE_SP, FLAT_STATUE_SP); 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.STATUE, FLAT_STATUE); + directFlatVisuals.put(Terrain.STATUE_SP, FLAT_STATUE_SP); + directFlatVisuals.put(Terrain.SECRET_DOOR, directFlatVisuals.get(Terrain.WALL)); } @@ -446,10 +441,10 @@ public class DungeonTileSheet { commonAltVisuals.put(RAISED_HIGH_GRASS, RAISED_HIGH_GRASS_ALT); commonAltVisuals.put(RAISED_FURROWED_GRASS, RAISED_FURROWED_ALT); - commonAltVisuals.put(RAISED_HIGH_GRASS_OVER, RAISED_HIGH_GRASS_OVER_ALT); - commonAltVisuals.put(RAISED_FURROWED_GRASS_OVER, RAISED_FURROWED_OVER_ALT); commonAltVisuals.put(HIGH_GRASS_OVERHANG, HIGH_GRASS_OVERHANG_ALT); commonAltVisuals.put(FURROWED_OVERHANG, FURROWED_OVERHANG_ALT); + commonAltVisuals.put(HIGH_GRASS_UNDERHANG, HIGH_GRASS_UNDERHANG_ALT); + commonAltVisuals.put(FURROWED_UNDERHANG, FURROWED_UNDERHANG_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 4aa7f1421..750fc9a66 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/tiles/DungeonWallsTilemap.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/tiles/DungeonWallsTilemap.java @@ -80,8 +80,10 @@ public class DungeonWallsTilemap extends DungeonTilemap { return DungeonTileSheet.DOOR_OVERHANG_OPEN; } else if (Dungeon.level.insideMap(pos) && map[pos+mapWidth] == Terrain.CRYSTAL_DOOR ) { return DungeonTileSheet.DOOR_OVERHANG_CRYSTAL; - } else if (pos + mapWidth < size && (map[pos+mapWidth] == Terrain.STATUE || map[pos+mapWidth] == Terrain.STATUE_SP)){ + } else if (pos + mapWidth < size && map[pos+mapWidth] == Terrain.STATUE){ return DungeonTileSheet.STATUE_OVERHANG; + } else if (pos + mapWidth < size && map[pos+mapWidth] == Terrain.STATUE_SP){ + return DungeonTileSheet.STATUE_SP_OVERHANG; } else if (pos + mapWidth < size && map[pos+mapWidth] == Terrain.ALCHEMY){ return DungeonTileSheet.ALCHEMY_POT_OVERHANG; } else if (pos + mapWidth < size && map[pos+mapWidth] == Terrain.BARRICADE){ 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 3864fb3e6..5784c5430 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/tiles/RaisedTerrainTilemap.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/tiles/RaisedTerrainTilemap.java @@ -38,11 +38,11 @@ public class RaisedTerrainTilemap extends DungeonTilemap { if (tile == Terrain.HIGH_GRASS){ return DungeonTileSheet.getVisualWithAlts( - DungeonTileSheet.RAISED_HIGH_GRASS_OVER, + DungeonTileSheet.HIGH_GRASS_UNDERHANG, pos); } else if (tile == Terrain.FURROWED_GRASS){ return DungeonTileSheet.getVisualWithAlts( - DungeonTileSheet.RAISED_FURROWED_GRASS_OVER, + DungeonTileSheet.FURROWED_UNDERHANG, pos); }