v0.7.1: implemented new furrowed grass mechanic for huntress
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 15 KiB |
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 17 KiB |
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 18 KiB |
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 15 KiB |
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 23 KiB |
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 19 KiB |
|
@ -44,7 +44,8 @@ public class StormCloud extends Blob {
|
||||||
int terr = Dungeon.level.map[cell];
|
int terr = Dungeon.level.map[cell];
|
||||||
if (terr == Terrain.EMPTY || terr == Terrain.GRASS ||
|
if (terr == Terrain.EMPTY || terr == Terrain.GRASS ||
|
||||||
terr == Terrain.EMBERS || terr == Terrain.EMPTY_SP ||
|
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);
|
Level.set(cell, Terrain.WATER);
|
||||||
GameScene.updateMap(cell);
|
GameScene.updateMap(cell);
|
||||||
} else if (terr == Terrain.SECRET_TRAP || terr == Terrain.TRAP || terr == Terrain.INACTIVE_TRAP) {
|
} else if (terr == Terrain.SECRET_TRAP || terr == Terrain.TRAP || terr == Terrain.INACTIVE_TRAP) {
|
||||||
|
|
|
@ -78,7 +78,8 @@ public class RegrowthBomb extends Bomb {
|
||||||
Dungeon.level.map[i] == Terrain.EMBERS ||
|
Dungeon.level.map[i] == Terrain.EMBERS ||
|
||||||
Dungeon.level.map[i] == Terrain.EMPTY_DECO ||
|
Dungeon.level.map[i] == Terrain.EMPTY_DECO ||
|
||||||
Dungeon.level.map[i] == Terrain.GRASS ||
|
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);
|
plantCandidates.add(i);
|
||||||
}
|
}
|
||||||
|
|
|
@ -55,7 +55,8 @@ public class AquaBlast extends TargetedSpell {
|
||||||
int terr = Dungeon.level.map[cell + i];
|
int terr = Dungeon.level.map[cell + i];
|
||||||
if (terr == Terrain.EMPTY || terr == Terrain.GRASS ||
|
if (terr == Terrain.EMPTY || terr == Terrain.GRASS ||
|
||||||
terr == Terrain.EMBERS || terr == Terrain.EMPTY_SP ||
|
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);
|
Level.set(cell + i, Terrain.WATER);
|
||||||
GameScene.updateMap(cell + i);
|
GameScene.updateMap(cell + i);
|
||||||
}
|
}
|
||||||
|
|
|
@ -128,14 +128,7 @@ public class CursedWand {
|
||||||
case 1:
|
case 1:
|
||||||
cursedFX(user, bolt, new Callback() {
|
cursedFX(user, bolt, new Callback() {
|
||||||
public void call() {
|
public void call() {
|
||||||
int c = Dungeon.level.map[bolt.collisionPos];
|
GameScene.add( Blob.seed(bolt.collisionPos, 30, Regrowth.class));
|
||||||
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));
|
|
||||||
}
|
|
||||||
wand.wandUsed();
|
wand.wandUsed();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -220,7 +213,8 @@ public class CursedWand {
|
||||||
pos == Terrain.EMBERS ||
|
pos == Terrain.EMBERS ||
|
||||||
pos == Terrain.EMPTY_DECO ||
|
pos == Terrain.EMPTY_DECO ||
|
||||||
pos == Terrain.GRASS ||
|
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);
|
Dungeon.level.plant((Plant.Seed) Generator.random(Generator.Category.SEED), pos);
|
||||||
}
|
}
|
||||||
wand.wandUsed();
|
wand.wandUsed();
|
||||||
|
@ -358,14 +352,7 @@ public class CursedWand {
|
||||||
//great forest fire!
|
//great forest fire!
|
||||||
case 0:
|
case 0:
|
||||||
for (int i = 0; i < Dungeon.level.length(); i++){
|
for (int i = 0; i < Dungeon.level.length(); i++){
|
||||||
int c = Dungeon.level.map[i];
|
GameScene.add( Blob.seed(i, 15, Regrowth.class));
|
||||||
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));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
do {
|
do {
|
||||||
GameScene.add(Blob.seed(Dungeon.level.randomDestination(), 10, Fire.class));
|
GameScene.add(Blob.seed(Dungeon.level.randomDestination(), 10, Fire.class));
|
||||||
|
|
|
@ -78,7 +78,8 @@ public class WandOfRegrowth extends Wand {
|
||||||
c == Terrain.EMBERS ||
|
c == Terrain.EMBERS ||
|
||||||
c == Terrain.EMPTY_DECO ||
|
c == Terrain.EMPTY_DECO ||
|
||||||
c == Terrain.GRASS ||
|
c == Terrain.GRASS ||
|
||||||
c == Terrain.HIGH_GRASS)) {
|
c == Terrain.HIGH_GRASS ||
|
||||||
|
c == Terrain.FURROWED_GRASS)) {
|
||||||
i.remove();
|
i.remove();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -711,6 +711,7 @@ public abstract class Level implements Bundlable {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (map[pos] == Terrain.HIGH_GRASS ||
|
if (map[pos] == Terrain.HIGH_GRASS ||
|
||||||
|
map[pos] == Terrain.FURROWED_GRASS ||
|
||||||
map[pos] == Terrain.EMPTY ||
|
map[pos] == Terrain.EMPTY ||
|
||||||
map[pos] == Terrain.EMBERS ||
|
map[pos] == Terrain.EMBERS ||
|
||||||
map[pos] == Terrain.EMPTY_DECO) {
|
map[pos] == Terrain.EMPTY_DECO) {
|
||||||
|
@ -800,6 +801,7 @@ public abstract class Level implements Bundlable {
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case Terrain.HIGH_GRASS:
|
case Terrain.HIGH_GRASS:
|
||||||
|
case Terrain.FURROWED_GRASS:
|
||||||
HighGrass.trample( this, cell, ch );
|
HighGrass.trample( this, cell, ch );
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -1002,6 +1004,8 @@ public abstract class Level implements Bundlable {
|
||||||
return Messages.get(Level.class, "exit_name");
|
return Messages.get(Level.class, "exit_name");
|
||||||
case Terrain.EMBERS:
|
case Terrain.EMBERS:
|
||||||
return Messages.get(Level.class, "embers_name");
|
return Messages.get(Level.class, "embers_name");
|
||||||
|
case Terrain.FURROWED_GRASS:
|
||||||
|
return Messages.get(Level.class, "furrowed_grass_name");
|
||||||
case Terrain.LOCKED_DOOR:
|
case Terrain.LOCKED_DOOR:
|
||||||
return Messages.get(Level.class, "locked_door_name");
|
return Messages.get(Level.class, "locked_door_name");
|
||||||
case Terrain.PEDESTAL:
|
case Terrain.PEDESTAL:
|
||||||
|
@ -1049,6 +1053,7 @@ public abstract class Level implements Bundlable {
|
||||||
case Terrain.EMBERS:
|
case Terrain.EMBERS:
|
||||||
return Messages.get(Level.class, "embers_desc");
|
return Messages.get(Level.class, "embers_desc");
|
||||||
case Terrain.HIGH_GRASS:
|
case Terrain.HIGH_GRASS:
|
||||||
|
case Terrain.FURROWED_GRASS:
|
||||||
return Messages.get(Level.class, "high_grass_desc");
|
return Messages.get(Level.class, "high_grass_desc");
|
||||||
case Terrain.LOCKED_DOOR:
|
case Terrain.LOCKED_DOOR:
|
||||||
return Messages.get(Level.class, "locked_door_desc");
|
return Messages.get(Level.class, "locked_door_desc");
|
||||||
|
|
|
@ -237,7 +237,7 @@ public abstract class RegularLevel extends Level {
|
||||||
}
|
}
|
||||||
|
|
||||||
for (Mob m : mobs){
|
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;
|
map[m.pos] = Terrain.GRASS;
|
||||||
losBlocking[m.pos] = false;
|
losBlocking[m.pos] = false;
|
||||||
}
|
}
|
||||||
|
@ -324,7 +324,7 @@ public abstract class RegularLevel extends Level {
|
||||||
type = Heap.Type.HEAP;
|
type = Heap.Type.HEAP;
|
||||||
}
|
}
|
||||||
int cell = randomDropCell();
|
int cell = randomDropCell();
|
||||||
if (map[cell] == Terrain.HIGH_GRASS) {
|
if (map[cell] == Terrain.HIGH_GRASS || map[cell] == Terrain.FURROWED_GRASS) {
|
||||||
map[cell] = Terrain.GRASS;
|
map[cell] = Terrain.GRASS;
|
||||||
losBlocking[cell] = false;
|
losBlocking[cell] = false;
|
||||||
}
|
}
|
||||||
|
@ -353,7 +353,7 @@ public abstract class RegularLevel extends Level {
|
||||||
for (Item item : itemsToSpawn) {
|
for (Item item : itemsToSpawn) {
|
||||||
int cell = randomDropCell();
|
int cell = randomDropCell();
|
||||||
drop( item, cell ).type = Heap.Type.HEAP;
|
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;
|
map[cell] = Terrain.GRASS;
|
||||||
losBlocking[cell] = false;
|
losBlocking[cell] = false;
|
||||||
}
|
}
|
||||||
|
@ -362,7 +362,7 @@ public abstract class RegularLevel extends Level {
|
||||||
Item item = Bones.get();
|
Item item = Bones.get();
|
||||||
if (item != null) {
|
if (item != null) {
|
||||||
int cell = randomDropCell();
|
int cell = randomDropCell();
|
||||||
if (map[cell] == Terrain.HIGH_GRASS) {
|
if (map[cell] == Terrain.HIGH_GRASS || map[cell] == Terrain.FURROWED_GRASS) {
|
||||||
map[cell] = Terrain.GRASS;
|
map[cell] = Terrain.GRASS;
|
||||||
losBlocking[cell] = false;
|
losBlocking[cell] = false;
|
||||||
}
|
}
|
||||||
|
@ -389,7 +389,7 @@ public abstract class RegularLevel extends Level {
|
||||||
GuidePage p = new GuidePage();
|
GuidePage p = new GuidePage();
|
||||||
p.page(missingPages.get(0));
|
p.page(missingPages.get(0));
|
||||||
int cell = randomDropCell();
|
int cell = randomDropCell();
|
||||||
if (map[cell] == Terrain.HIGH_GRASS) {
|
if (map[cell] == Terrain.HIGH_GRASS || map[cell] == Terrain.FURROWED_GRASS) {
|
||||||
map[cell] = Terrain.GRASS;
|
map[cell] = Terrain.GRASS;
|
||||||
losBlocking[cell] = false;
|
losBlocking[cell] = false;
|
||||||
}
|
}
|
||||||
|
|
|
@ -39,6 +39,7 @@ public class Terrain {
|
||||||
public static final int BARRICADE = 13;
|
public static final int BARRICADE = 13;
|
||||||
public static final int EMPTY_SP = 14;
|
public static final int EMPTY_SP = 14;
|
||||||
public static final int HIGH_GRASS = 15;
|
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_DOOR = 16;
|
||||||
public static final int SECRET_TRAP = 17;
|
public static final int SECRET_TRAP = 17;
|
||||||
|
@ -85,6 +86,7 @@ public class Terrain {
|
||||||
flags[BARRICADE] = FLAMABLE | SOLID | LOS_BLOCKING;
|
flags[BARRICADE] = FLAMABLE | SOLID | LOS_BLOCKING;
|
||||||
flags[EMPTY_SP] = flags[EMPTY];
|
flags[EMPTY_SP] = flags[EMPTY];
|
||||||
flags[HIGH_GRASS] = PASSABLE | LOS_BLOCKING | FLAMABLE;
|
flags[HIGH_GRASS] = PASSABLE | LOS_BLOCKING | FLAMABLE;
|
||||||
|
flags[FURROWED_GRASS]= flags[HIGH_GRASS];
|
||||||
|
|
||||||
flags[SECRET_DOOR] = flags[WALL] | SECRET;
|
flags[SECRET_DOOR] = flags[WALL] | SECRET;
|
||||||
flags[SECRET_TRAP] = flags[EMPTY] | SECRET;
|
flags[SECRET_TRAP] = flags[EMPTY] | SECRET;
|
||||||
|
|
|
@ -42,53 +42,72 @@ import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene;
|
||||||
import com.watabou.utils.Random;
|
import com.watabou.utils.Random;
|
||||||
|
|
||||||
public class HighGrass {
|
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 ) {
|
public static void trample( Level level, int pos, Char ch ) {
|
||||||
|
|
||||||
if (ch instanceof Hero && ((Hero) ch).heroClass == HeroClass.HUNTRESS){
|
if (freezeTrample) return;
|
||||||
//Level.set(pos, Terrain.FURROWED_GRASS);
|
|
||||||
Level.set(pos, Terrain.GRASS);
|
|
||||||
} else {
|
|
||||||
Level.set(pos, Terrain.GRASS);
|
|
||||||
}
|
|
||||||
GameScene.updateMap( pos );
|
|
||||||
|
|
||||||
int naturalismLevel = 0;
|
if (level.map[pos] == Terrain.FURROWED_GRASS){
|
||||||
|
if (ch instanceof Hero && ((Hero) ch).heroClass == HeroClass.HUNTRESS){
|
||||||
if (ch != null) {
|
//Do nothing
|
||||||
SandalsOfNature.Naturalism naturalism = ch.buff( SandalsOfNature.Naturalism.class );
|
freezeTrample = true;
|
||||||
if (naturalism != null) {
|
} else {
|
||||||
if (!naturalism.isCursed()) {
|
Level.set(pos, Terrain.GRASS);
|
||||||
naturalismLevel = naturalism.itemLevel() + 1;
|
}
|
||||||
naturalism.charge();
|
|
||||||
} else {
|
} else {
|
||||||
naturalismLevel = -1;
|
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) {
|
||||||
if (naturalismLevel >= 0) {
|
// Seed, scales from 1/20 to 1/4
|
||||||
// Seed, scales from 1/20 to 1/4
|
if (Random.Int(20 - (naturalismLevel * 4)) == 0) {
|
||||||
if (Random.Int(20 - (naturalismLevel * 4)) == 0) {
|
Item seed = Generator.random(Generator.Category.SEED);
|
||||||
Item seed = Generator.random(Generator.Category.SEED);
|
|
||||||
|
if (seed instanceof BlandfruitBush.Seed) {
|
||||||
if (seed instanceof BlandfruitBush.Seed) {
|
if (Random.Int(3) - Dungeon.LimitedDrops.BLANDFRUIT_SEED.count >= 0) {
|
||||||
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();
|
level.drop(seed, pos).sprite.drop();
|
||||||
Dungeon.LimitedDrops.BLANDFRUIT_SEED.count++;
|
}
|
||||||
}
|
|
||||||
} else
|
// Dew, scales from 1/6 to 1/3
|
||||||
level.drop(seed, pos).sprite.drop();
|
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;
|
int leaves = 4;
|
||||||
|
|
||||||
|
|
||||||
if (ch instanceof Hero) {
|
if (ch instanceof Hero) {
|
||||||
Hero hero = (Hero)ch;
|
Hero hero = (Hero)ch;
|
||||||
|
|
|
@ -80,6 +80,10 @@ public class DungeonTerrainTilemap extends DungeonTilemap {
|
||||||
return DungeonTileSheet.getVisualWithAlts(
|
return DungeonTileSheet.getVisualWithAlts(
|
||||||
DungeonTileSheet.RAISED_HIGH_GRASS,
|
DungeonTileSheet.RAISED_HIGH_GRASS,
|
||||||
pos);
|
pos);
|
||||||
|
} else if (tile == Terrain.FURROWED_GRASS) {
|
||||||
|
return DungeonTileSheet.getVisualWithAlts(
|
||||||
|
DungeonTileSheet.RAISED_FURROWED_GRASS,
|
||||||
|
pos);
|
||||||
} else {
|
} else {
|
||||||
return DungeonTileSheet.NULL_TILE;
|
return DungeonTileSheet.NULL_TILE;
|
||||||
}
|
}
|
||||||
|
|
|
@ -81,7 +81,7 @@ public class DungeonTileSheet {
|
||||||
public static HashSet<Integer> waterStitcheable = new HashSet<>(Arrays.asList(
|
public static HashSet<Integer> waterStitcheable = new HashSet<>(Arrays.asList(
|
||||||
Terrain.EMPTY, Terrain.GRASS, Terrain.EMPTY_WELL,
|
Terrain.EMPTY, Terrain.GRASS, Terrain.EMPTY_WELL,
|
||||||
Terrain.ENTRANCE, Terrain.EXIT, Terrain.EMBERS,
|
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.TRAP, Terrain.INACTIVE_TRAP, Terrain.EMPTY_DECO,
|
||||||
Terrain.SIGN, Terrain.WELL, Terrain.STATUE, Terrain.ALCHEMY,
|
Terrain.SIGN, Terrain.WELL, Terrain.STATUE, Terrain.ALCHEMY,
|
||||||
Terrain.DOOR, Terrain.OPEN_DOOR, Terrain.LOCKED_DOOR
|
Terrain.DOOR, Terrain.OPEN_DOOR, Terrain.LOCKED_DOOR
|
||||||
|
@ -123,6 +123,7 @@ public class DungeonTileSheet {
|
||||||
chasmStitcheable.put( Terrain.EMBERS, CHASM_FLOOR );
|
chasmStitcheable.put( Terrain.EMBERS, CHASM_FLOOR );
|
||||||
chasmStitcheable.put( Terrain.EMPTY_WELL, CHASM_FLOOR );
|
chasmStitcheable.put( Terrain.EMPTY_WELL, CHASM_FLOOR );
|
||||||
chasmStitcheable.put( Terrain.HIGH_GRASS, 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.EMPTY_DECO, CHASM_FLOOR );
|
||||||
chasmStitcheable.put( Terrain.SIGN, CHASM_FLOOR );
|
chasmStitcheable.put( Terrain.SIGN, CHASM_FLOOR );
|
||||||
chasmStitcheable.put( Terrain.EMPTY_WELL, 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_ALCHEMY_POT = FLAT_OTHER+3;
|
||||||
public static final int FLAT_BARRICADE = FLAT_OTHER+4;
|
public static final int FLAT_BARRICADE = FLAT_OTHER+4;
|
||||||
public static final int FLAT_HIGH_GRASS = FLAT_OTHER+5;
|
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_ALCHEMY_POT = RAISED_OTHER+3;
|
||||||
public static final int RAISED_BARRICADE = RAISED_OTHER+4;
|
public static final int RAISED_BARRICADE = RAISED_OTHER+4;
|
||||||
public static final int RAISED_HIGH_GRASS = RAISED_OTHER+5;
|
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 = WALL_OVERHANG+23;
|
||||||
public static final int DOOR_SIDEWAYS_LOCKED = WALL_OVERHANG+24;
|
public static final int DOOR_SIDEWAYS_LOCKED = WALL_OVERHANG+24;
|
||||||
|
|
||||||
public static final int STATUE_OVERHANG = WALL_OVERHANG+26;
|
public static final int STATUE_OVERHANG = WALL_OVERHANG+32;
|
||||||
public static final int ALCHEMY_POT_OVERHANG = WALL_OVERHANG+27;
|
public static final int ALCHEMY_POT_OVERHANG = WALL_OVERHANG+33;
|
||||||
public static final int BARRICADE_OVERHANG = WALL_OVERHANG+28;
|
public static final int BARRICADE_OVERHANG = WALL_OVERHANG+34;
|
||||||
public static final int HIGH_GRASS_OVERHANG = WALL_OVERHANG+29;
|
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
|
* Logic for the selection of tile visuals
|
||||||
|
@ -373,6 +380,7 @@ public class DungeonTileSheet {
|
||||||
directFlatVisuals.put(Terrain.ALCHEMY, FLAT_ALCHEMY_POT);
|
directFlatVisuals.put(Terrain.ALCHEMY, FLAT_ALCHEMY_POT);
|
||||||
directFlatVisuals.put(Terrain.BARRICADE, FLAT_BARRICADE);
|
directFlatVisuals.put(Terrain.BARRICADE, FLAT_BARRICADE);
|
||||||
directFlatVisuals.put(Terrain.HIGH_GRASS, FLAT_HIGH_GRASS);
|
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));
|
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_BOOKSHELF, FLAT_BOOKSHELF_ALT);
|
||||||
commonAltVisuals.put(FLAT_HIGH_GRASS, FLAT_HIGH_GRASS_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, RAISED_WALL_ALT);
|
||||||
commonAltVisuals.put(RAISED_WALL_DECO, RAISED_WALL_DECO_ALT);
|
commonAltVisuals.put(RAISED_WALL_DECO, RAISED_WALL_DECO_ALT);
|
||||||
commonAltVisuals.put(RAISED_WALL_BOOKSHELF, RAISED_WALL_BOOKSHELF_ALT);
|
commonAltVisuals.put(RAISED_WALL_BOOKSHELF, RAISED_WALL_BOOKSHELF_ALT);
|
||||||
|
|
||||||
commonAltVisuals.put(RAISED_HIGH_GRASS, RAISED_HIGH_GRASS_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(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)
|
//These alt visuals trigger 5% of the time (and also override common alts when they show up)
|
||||||
|
|
|
@ -81,6 +81,8 @@ public class DungeonWallsTilemap extends DungeonTilemap {
|
||||||
return DungeonTileSheet.BARRICADE_OVERHANG;
|
return DungeonTileSheet.BARRICADE_OVERHANG;
|
||||||
} else if (pos + mapWidth < size && map[pos+mapWidth] == Terrain.HIGH_GRASS){
|
} else if (pos + mapWidth < size && map[pos+mapWidth] == Terrain.HIGH_GRASS){
|
||||||
return DungeonTileSheet.getVisualWithAlts(DungeonTileSheet.HIGH_GRASS_OVERHANG, pos + mapWidth);
|
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;
|
return -1;
|
||||||
|
|
|
@ -45,7 +45,7 @@ public class GridTileMap extends DungeonTilemap {
|
||||||
protected int getTileVisual(int pos, int tile, boolean flat) {
|
protected int getTileVisual(int pos, int tile, boolean flat) {
|
||||||
if (gridSetting == -1 || (pos % mapWidth) % 2 != (pos / mapWidth) % 2){
|
if (gridSetting == -1 || (pos % mapWidth) % 2 != (pos / mapWidth) % 2){
|
||||||
return -1;
|
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;
|
return gridSetting;
|
||||||
} else if (DungeonTileSheet.doorTile(tile)){
|
} else if (DungeonTileSheet.doorTile(tile)){
|
||||||
if (DungeonTileSheet.wallStitcheable(map[pos - mapWidth])){
|
if (DungeonTileSheet.wallStitcheable(map[pos - mapWidth])){
|
||||||
|
|
|
@ -39,9 +39,14 @@ public class RaisedTerrainTilemap extends DungeonTilemap {
|
||||||
if (tile == Terrain.HIGH_GRASS){
|
if (tile == Terrain.HIGH_GRASS){
|
||||||
return DungeonTileSheet.getVisualWithAlts(
|
return DungeonTileSheet.getVisualWithAlts(
|
||||||
DungeonTileSheet.RAISED_HIGH_GRASS,
|
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;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -68,10 +68,13 @@ public class TerrainFeaturesTilemap extends DungeonTilemap {
|
||||||
if (Dungeon.depth == 21) stage--;
|
if (Dungeon.depth == 21) stage--;
|
||||||
if (tile == Terrain.HIGH_GRASS){
|
if (tile == Terrain.HIGH_GRASS){
|
||||||
return 9 + 16*stage + (DungeonTileSheet.tileVariance[pos] >= 50 ? 1 : 0);
|
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);
|
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) {
|
} 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;
|
return -1;
|
||||||
|
|
|
@ -160,6 +160,7 @@ levels.level.open_door_name=Open door
|
||||||
levels.level.entrace_name=Depth entrance
|
levels.level.entrace_name=Depth entrance
|
||||||
levels.level.exit_name=Depth exit
|
levels.level.exit_name=Depth exit
|
||||||
levels.level.embers_name=Embers
|
levels.level.embers_name=Embers
|
||||||
|
levels.level.furrowed_grass_name=Furrowed vegetation
|
||||||
levels.level.locked_door_name=Locked door
|
levels.level.locked_door_name=Locked door
|
||||||
levels.level.pedestal_name=Pedestal
|
levels.level.pedestal_name=Pedestal
|
||||||
levels.level.barricade_name=Barricade
|
levels.level.barricade_name=Barricade
|
||||||
|
|