diff --git a/game/modules/tome/class/NicerTiles.lua b/game/modules/tome/class/NicerTiles.lua
index f50766bef3de0e3f17748dae1cbf5d1377b2fae5..7022dcdfb35df3c99a8ce05912c106dafd02f9b1 100644
--- a/game/modules/tome/class/NicerTiles.lua
+++ b/game/modules/tome/class/NicerTiles.lua
@@ -106,10 +106,6 @@ function _M:niceTileRoundwall3d(level, i, j, g, nt)
 	local g7 = level.map:checkEntity(i-1, j-1, Map.TERRAIN, "block_move") and true or false
 	local g9 = level.map:checkEntity(i+1, j-1, Map.TERRAIN, "block_move") and true or false
 
-	print(g7,g8,g9)
-	print(g4,s,g6)
-	print(g1,g2,g3)
-
 	-- Full
 	if g1==s and g2==s and g3==s and g4==s and g6==s and g7==s and g8==s and g9==s then self:replace(i, j, self:getTile(nt.inner))
 	-- Corners
@@ -148,32 +144,40 @@ function _M:niceTileReplace(level, i, j, g, nt)
 end
 
 --- Make water have nice transition to other stuff
-function _M:niceTileWater(level, i, j, g, nt)
-	local g8 = level.map:checkEntity(i, j-1, Map.TERRAIN, "subtype") or "water"
-	local g2 = level.map:checkEntity(i, j+1, Map.TERRAIN, "subtype") or "water"
-	local g4 = level.map:checkEntity(i-1, j, Map.TERRAIN, "subtype") or "water"
-	local g6 = level.map:checkEntity(i+1, j, Map.TERRAIN, "subtype") or "water"
-	local g7 = level.map:checkEntity(i-1, j-1, Map.TERRAIN, "subtype") or "water"
-	local g9 = level.map:checkEntity(i+1, j-1, Map.TERRAIN, "subtype") or "water"
-	local g1 = level.map:checkEntity(i-1, j+1, Map.TERRAIN, "subtype") or "water"
-	local g3 = level.map:checkEntity(i+1, j+1, Map.TERRAIN, "subtype") or "water"
+function _M:niceTileGenericBorders(level, i, j, g, nt, type, allow)
+	local g8 = level.map:checkEntity(i, j-1, Map.TERRAIN, "subtype") or type
+	local g2 = level.map:checkEntity(i, j+1, Map.TERRAIN, "subtype") or type
+	local g4 = level.map:checkEntity(i-1, j, Map.TERRAIN, "subtype") or type
+	local g6 = level.map:checkEntity(i+1, j, Map.TERRAIN, "subtype") or type
+	local g7 = level.map:checkEntity(i-1, j-1, Map.TERRAIN, "subtype") or type
+	local g9 = level.map:checkEntity(i+1, j-1, Map.TERRAIN, "subtype") or type
+	local g1 = level.map:checkEntity(i-1, j+1, Map.TERRAIN, "subtype") or type
+	local g3 = level.map:checkEntity(i+1, j+1, Map.TERRAIN, "subtype") or type
 
 	-- Sides
-	if     g4=="water" and g6=="water" and g8=="grass" then self:replace(i, j, self:getTile(nt.grass8))
-	elseif g4=="water" and g6=="water" and g2=="grass" then self:replace(i, j, self:getTile(nt.grass2))
-	elseif g8=="water" and g2=="water" and g4=="grass" then self:replace(i, j, self:getTile(nt.grass4))
-	elseif g8=="water" and g2=="water" and g6=="grass" then self:replace(i, j, self:getTile(nt.grass6))
+	if     g4==type and g6==type and allow[g8] then self:replace(i, j, self:getTile(nt[g8.."8"]))
+	elseif g4==type and g6==type and allow[g2] then self:replace(i, j, self:getTile(nt[g2.."2"]))
+	elseif g8==type and g2==type and allow[g4] then self:replace(i, j, self:getTile(nt[g4.."4"]))
+	elseif g8==type and g2==type and allow[g6] then self:replace(i, j, self:getTile(nt[g6.."6"]))
 	-- Corners
-	elseif g4=="grass" and g7=="grass" and g8=="grass" then self:replace(i, j, self:getTile(nt.grass7))
-	elseif g4=="grass" and g1=="grass" and g2=="grass" then self:replace(i, j, self:getTile(nt.grass1))
-	elseif g2=="grass" and g3=="grass" and g6=="grass" then self:replace(i, j, self:getTile(nt.grass3))
-	elseif g6=="grass" and g9=="grass" and g8=="grass" then self:replace(i, j, self:getTile(nt.grass9))
+	elseif allow[g4] and allow[g7] and allow[g8] then self:replace(i, j, self:getTile(nt[g7.."7"]))
+	elseif allow[g4] and allow[g1] and allow[g2] then self:replace(i, j, self:getTile(nt[g1.."1"]))
+	elseif allow[g2] and allow[g3] and allow[g6] then self:replace(i, j, self:getTile(nt[g3.."3"]))
+	elseif allow[g6] and allow[g9] and allow[g8] then self:replace(i, j, self:getTile(nt[g9.."9"]))
 	-- Inner corners
-	elseif g4=="water" and g7=="grass" and g8=="water" then self:replace(i, j, self:getTile(nt.inner_grass3))
-	elseif g4=="water" and g1=="grass" and g2=="water" then self:replace(i, j, self:getTile(nt.inner_grass9))
-	elseif g2=="water" and g3=="grass" and g6=="water" then self:replace(i, j, self:getTile(nt.inner_grass7))
-	elseif g6=="water" and g9=="grass" and g8=="water" then self:replace(i, j, self:getTile(nt.inner_grass1))
+	elseif g4==type and allow[g7] and g8==type then self:replace(i, j, self:getTile(nt["inner_"..g7.."3"]))
+	elseif g4==type and allow[g1] and g2==type then self:replace(i, j, self:getTile(nt["inner_"..g1.."9"]))
+	elseif g2==type and allow[g3] and g6==type then self:replace(i, j, self:getTile(nt["inner_"..g3.."7"]))
+	elseif g6==type and allow[g9] and g8==type then self:replace(i, j, self:getTile(nt["inner_"..g9.."1"]))
 	-- Full
-	elseif g1=="water" and g2=="water" and g3=="water" and g4=="water" and g6=="water" and g7=="water" and g8=="water" and g9=="water" then self:replace(i, j, self:getTile(nt.water))
+	elseif g1==type and g2==type and g3==type and g4==type and g6==type and g7==type and g8==type and g9==type then self:replace(i, j, self:getTile(nt[type]))
 	end
 end
+
+function _M:niceTileWater(level, i, j, g, nt)
+	self:niceTileGenericBorders(level, i, j, g, nt, "water", {grass=true, sand=true})
+end
+
+function _M:niceTileGrassSand(level, i, j, g, nt)
+	self:niceTileGenericBorders(level, i, j, g, nt, "sand", {grass=true})
+end
diff --git a/game/modules/tome/data/general/grids/sand.lua b/game/modules/tome/data/general/grids/sand.lua
index 2da59b6e9f275477071869aaee02b22b8bf80ed2..23a86c0f6f4f14658c27198863edbfd60888d5e5 100644
--- a/game/modules/tome/data/general/grids/sand.lua
+++ b/game/modules/tome/data/general/grids/sand.lua
@@ -20,12 +20,22 @@
 newEntity{
 	define_as = "SAND",
 	type = "floor", subtype = "sand",
+	name = "sand", image = "terrain/sandfloor.png",
+	display = '.', color={r=203,g=189,b=72}, back_color={r=93,g=79,b=22},
+	nice_tiler = { method="grassSand",
+		grass8={"SAND_GRASS_8", 100, 1, 1}, grass2={"SAND_GRASS_2", 100, 1, 1}, grass4={"SAND_GRASS_4", 100, 1, 1}, grass6={"SAND_GRASS_6", 100, 1, 1}, grass1={"SAND_GRASS_1", 100, 1, 1}, grass3={"SAND_GRASS_3", 100, 1, 1}, grass7={"SAND_GRASS_7", 100, 1, 1}, grass9={"SAND_GRASS_9", 100, 1, 1}, inner_grass1="SAND_GRASS_1I", inner_grass3="SAND_GRASS_3I", inner_grass7="SAND_GRASS_7I", inner_grass9="SAND_GRASS_9I",
+	},
+}
+
+newEntity{
+	define_as = "UNDERGROUND_SAND",
+	type = "floor", subtype = "sand",
 	name = "sand", image = "terrain/sand.png",
 	display = '.', color={r=203,g=189,b=72}, back_color={r=93,g=79,b=22},
 	grow = "SANDWALL_STABLE",
 	nice_tiler = { method="replace", base={"SAND", 10, 1, 11}},
 }
-for i = 1, 11 do newEntity{ base = "SAND", define_as = "SAND"..i, image = "terrain/sand_"..i..".png"} end
+for i = 1, 11 do newEntity{ base = "UNDERGROUND_SAND", define_as = "UNDERGROUND_SAND"..i, image = "terrain/sand_"..i..".png"} end
 
 newEntity{
 	define_as = "SANDWALL",
@@ -252,3 +262,15 @@ newEntity{
 	change_level = 1,
 	change_zone = "wilderness",
 }
+
+-----------------------------------------
+-- Grass/sand
+-----------------------------------------
+
+for i = 1, 9 do for j = 1, 1 do
+	if i ~= 5 then newEntity{base="SAND", define_as = "SAND_GRASS_"..i..j, image="terrain/sand_grass_"..i.."_"..j..".png"} end
+end end
+newEntity{base="SAND", define_as = "SAND_GRASS_1I", image="terrain/sand_grass_1i_1.png"}
+newEntity{base="SAND", define_as = "SAND_GRASS_3I", image="terrain/sand_grass_3i_1.png"}
+newEntity{base="SAND", define_as = "SAND_GRASS_7I", image="terrain/sand_grass_7i_1.png"}
+newEntity{base="SAND", define_as = "SAND_GRASS_9I", image="terrain/sand_grass_9i_1.png"}
diff --git a/game/modules/tome/data/general/grids/water.lua b/game/modules/tome/data/general/grids/water.lua
index fa2b637991ef207c1c1e187802439aa809446c20..73e8ff0e69c290a5ac4bba7fc4a441a912f02795 100644
--- a/game/modules/tome/data/general/grids/water.lua
+++ b/game/modules/tome/data/general/grids/water.lua
@@ -84,11 +84,17 @@ newEntity{
 	air_level = -5, air_condition="water",
 }
 
+-----------------------------------------
+-- Water/grass
+-----------------------------------------
+
 newEntity{ base="WATER_BASE",
 	define_as = "DEEP_WATER",
 	add_displays = class:makeWater(true),
 	nice_tiler = { method="water",
-		water="WATER_GRASS_5", grass8={"WATER_GRASS_8", 100, 1, 2}, grass2={"WATER_GRASS_2", 100, 1, 2}, grass4={"WATER_GRASS_4", 100, 1, 2}, grass6={"WATER_GRASS_6", 100, 1, 2}, grass1={"WATER_GRASS_1", 100, 1, 2}, grass3={"WATER_GRASS_3", 100, 1, 2}, grass7={"WATER_GRASS_7", 100, 1, 2}, grass9={"WATER_GRASS_9", 100, 1, 2}, inner_grass1="WATER_GRASS_1I", inner_grass3="WATER_GRASS_3I", inner_grass7="WATER_GRASS_7I", inner_grass9="WATER_GRASS_9I"
+		water="WATER_GRASS_5",
+		grass8={"WATER_GRASS_8", 100, 1, 2}, grass2={"WATER_GRASS_2", 100, 1, 2}, grass4={"WATER_GRASS_4", 100, 1, 2}, grass6={"WATER_GRASS_6", 100, 1, 2}, grass1={"WATER_GRASS_1", 100, 1, 2}, grass3={"WATER_GRASS_3", 100, 1, 2}, grass7={"WATER_GRASS_7", 100, 1, 2}, grass9={"WATER_GRASS_9", 100, 1, 2}, inner_grass1="WATER_GRASS_1I", inner_grass3="WATER_GRASS_3I", inner_grass7="WATER_GRASS_7I", inner_grass9="WATER_GRASS_9I",
+		sand8={"WATER_SAND_8", 100, 1, 1}, sand2={"WATER_SAND_2", 100, 1, 1}, sand4={"WATER_SAND_4", 100, 1, 1}, sand6={"WATER_SAND_6", 100, 1, 1}, sand1={"WATER_SAND_1", 100, 1, 1}, sand3={"WATER_SAND_3", 100, 1, 1}, sand7={"WATER_SAND_7", 100, 1, 1}, sand9={"WATER_SAND_9", 100, 1, 1}, inner_sand1="WATER_SAND_1I", inner_sand3="WATER_SAND_3I", inner_sand7="WATER_SAND_7I", inner_sand9="WATER_SAND_9I",
 	},
 }
 
@@ -101,6 +107,41 @@ newEntity{base="WATER_BASE", define_as = "WATER_GRASS_3I", image="terrain/water_
 newEntity{base="WATER_BASE", define_as = "WATER_GRASS_7I", image="terrain/water_grass_7i_1.png"}
 newEntity{base="WATER_BASE", define_as = "WATER_GRASS_9I", image="terrain/water_grass_9i_1.png"}
 
+-----------------------------------------
+-- Water(ocean)/grass
+-----------------------------------------
+
+newEntity{ base="WATER_BASE",
+	define_as = "DEEP_OCEAN_WATER",
+	add_displays = class:makeWater(true),
+	nice_tiler = { method="water",
+		water="OCEAN_WATER_GRASS_5",
+		grass8={"OCEAN_WATER_GRASS_8", 100, 1, 2}, grass2={"OCEAN_WATER_GRASS_2", 100, 1, 2}, grass4={"OCEAN_WATER_GRASS_4", 100, 1, 2}, grass6={"OCEAN_WATER_GRASS_6", 100, 1, 2}, grass1={"OCEAN_WATER_GRASS_1", 100, 1, 2}, grass3={"OCEAN_WATER_GRASS_3", 100, 1, 2}, grass7={"OCEAN_WATER_GRASS_7", 100, 1, 2}, grass9={"OCEAN_WATER_GRASS_9", 100, 1, 2}, inner_grass1="OCEAN_WATER_GRASS_1I", inner_grass3="OCEAN_WATER_GRASS_3I", inner_grass7="OCEAN_WATER_GRASS_7I", inner_grass9="OCEAN_WATER_GRASS_9I",
+		sand8={"WATER_SAND_8", 100, 1, 1}, sand2={"WATER_SAND_2", 100, 1, 1}, sand4={"WATER_SAND_4", 100, 1, 1}, sand6={"WATER_SAND_6", 100, 1, 1}, sand1={"WATER_SAND_1", 100, 1, 1}, sand3={"WATER_SAND_3", 100, 1, 1}, sand7={"WATER_SAND_7", 100, 1, 1}, sand9={"WATER_SAND_9", 100, 1, 1}, inner_sand1="WATER_SAND_1I", inner_sand3="WATER_SAND_3I", inner_sand7="WATER_SAND_7I", inner_sand9="WATER_SAND_9I",
+	},
+}
+
+newEntity{base="WATER_BASE", define_as = "OCEAN_WATER_GRASS_5", image="terrain/ocean_water_grass_5_1.png"}
+for i = 1, 9 do for j = 1, 2 do
+	if i ~= 5 then newEntity{base="WATER_BASE", define_as = "OCEAN_WATER_GRASS_"..i..j, image="terrain/ocean_water_grass_"..i.."_"..j..".png"} end
+end end
+newEntity{base="WATER_BASE", define_as = "OCEAN_WATER_GRASS_1I", image="terrain/ocean_water_grass_1i_1.png"}
+newEntity{base="WATER_BASE", define_as = "OCEAN_WATER_GRASS_3I", image="terrain/ocean_water_grass_3i_1.png"}
+newEntity{base="WATER_BASE", define_as = "OCEAN_WATER_GRASS_7I", image="terrain/ocean_water_grass_7i_1.png"}
+newEntity{base="WATER_BASE", define_as = "OCEAN_WATER_GRASS_9I", image="terrain/ocean_water_grass_9i_1.png"}
+
+-----------------------------------------
+-- Water/sand
+-----------------------------------------
+
+for i = 1, 9 do for j = 1, 1 do
+	if i ~= 5 then newEntity{base="WATER_BASE", define_as = "WATER_SAND_"..i..j, image="terrain/water_sand_"..i.."_"..j..".png"} end
+end end
+newEntity{base="WATER_BASE", define_as = "WATER_SAND_1I", image="terrain/water_sand_1i_1.png"}
+newEntity{base="WATER_BASE", define_as = "WATER_SAND_3I", image="terrain/water_sand_3i_1.png"}
+newEntity{base="WATER_BASE", define_as = "WATER_SAND_7I", image="terrain/water_sand_7i_1.png"}
+newEntity{base="WATER_BASE", define_as = "WATER_SAND_9I", image="terrain/water_sand_9i_1.png"}
+
 newEntity{
 	define_as = "POISON_DEEP_WATER",
 	name = "poisoned deep water", image = "terrain/water_floor.png",
@@ -110,10 +151,6 @@ newEntity{
 	air_level = -5, air_condition="water",
 }
 
------------------------------------------
--- Water/grass
------------------------------------------
-
 
 -----------------------------------------
 -- Dungeony exits
diff --git a/game/modules/tome/data/gfx/shockbolt/terrain/ocean_water_grass_5_1.png b/game/modules/tome/data/gfx/shockbolt/terrain/ocean_water_grass_5_1.png
index 112cc3bf275d427e9a472e1996e0f35e06a110dd..9c433af185350dcfce86e390b97c6550c13be38c 100644
Binary files a/game/modules/tome/data/gfx/shockbolt/terrain/ocean_water_grass_5_1.png and b/game/modules/tome/data/gfx/shockbolt/terrain/ocean_water_grass_5_1.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/terrain/sand_grass_1_1.png b/game/modules/tome/data/gfx/shockbolt/terrain/sand_grass_1_1.png
new file mode 100644
index 0000000000000000000000000000000000000000..85da479c6825194791afb1e45250667b415f2526
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/terrain/sand_grass_1_1.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/terrain/sand_grass_1i_1.png b/game/modules/tome/data/gfx/shockbolt/terrain/sand_grass_1i_1.png
new file mode 100644
index 0000000000000000000000000000000000000000..25fdfa510a109e18a72f7322e96d790ebdceff20
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/terrain/sand_grass_1i_1.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/terrain/sand_grass_2_1.png b/game/modules/tome/data/gfx/shockbolt/terrain/sand_grass_2_1.png
new file mode 100644
index 0000000000000000000000000000000000000000..602083137c8e141ce0a99f3735b98ca30912545b
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/terrain/sand_grass_2_1.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/terrain/sand_grass_3_1.png b/game/modules/tome/data/gfx/shockbolt/terrain/sand_grass_3_1.png
new file mode 100644
index 0000000000000000000000000000000000000000..4544c3050d479c7d1ea9ac0d73d287c1dc39dec5
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/terrain/sand_grass_3_1.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/terrain/sand_grass_3i_1.png b/game/modules/tome/data/gfx/shockbolt/terrain/sand_grass_3i_1.png
new file mode 100644
index 0000000000000000000000000000000000000000..6b7c699c80e7cd95b81bd4ad13dcca2f97dbaff1
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/terrain/sand_grass_3i_1.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/terrain/sand_grass_4_1.png b/game/modules/tome/data/gfx/shockbolt/terrain/sand_grass_4_1.png
new file mode 100644
index 0000000000000000000000000000000000000000..b11575e23816ae3793606fe3dd6adb6db8c0315e
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/terrain/sand_grass_4_1.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/terrain/sand_grass_6_1.png b/game/modules/tome/data/gfx/shockbolt/terrain/sand_grass_6_1.png
new file mode 100644
index 0000000000000000000000000000000000000000..dab1f748c096996a24a5e1160e946afd23d6a516
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/terrain/sand_grass_6_1.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/terrain/sand_grass_7_1.png b/game/modules/tome/data/gfx/shockbolt/terrain/sand_grass_7_1.png
new file mode 100644
index 0000000000000000000000000000000000000000..91b25d6615d19d6d50e8e84d0caaca2cb2db67fa
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/terrain/sand_grass_7_1.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/terrain/sand_grass_7i_1.png b/game/modules/tome/data/gfx/shockbolt/terrain/sand_grass_7i_1.png
new file mode 100644
index 0000000000000000000000000000000000000000..9f51922182a78c671e837b28abe85353c2d07024
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/terrain/sand_grass_7i_1.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/terrain/sand_grass_8_1.png b/game/modules/tome/data/gfx/shockbolt/terrain/sand_grass_8_1.png
new file mode 100644
index 0000000000000000000000000000000000000000..55b2f8a1fb5982489ecf8570ffac77e03fa89724
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/terrain/sand_grass_8_1.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/terrain/sand_grass_9_1.png b/game/modules/tome/data/gfx/shockbolt/terrain/sand_grass_9_1.png
new file mode 100644
index 0000000000000000000000000000000000000000..f690949430efce6815a0e00841a9b46ee5498dc4
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/terrain/sand_grass_9_1.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/terrain/sand_grass_9i_1.png b/game/modules/tome/data/gfx/shockbolt/terrain/sand_grass_9i_1.png
new file mode 100644
index 0000000000000000000000000000000000000000..1f9b7f0ff382d61d4c09a022a39fb834434a2e50
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/terrain/sand_grass_9i_1.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/terrain/water_sand_1_1.png b/game/modules/tome/data/gfx/shockbolt/terrain/water_sand_1_1.png
new file mode 100644
index 0000000000000000000000000000000000000000..42e2341ecfab01aa71b4c5d5df82ecfeda66c9a2
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/terrain/water_sand_1_1.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/terrain/water_sand_1i_1.png b/game/modules/tome/data/gfx/shockbolt/terrain/water_sand_1i_1.png
new file mode 100644
index 0000000000000000000000000000000000000000..e453e67b0e555386dcfda2a1e03b167fb35e9b9a
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/terrain/water_sand_1i_1.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/terrain/water_sand_2_1.png b/game/modules/tome/data/gfx/shockbolt/terrain/water_sand_2_1.png
new file mode 100644
index 0000000000000000000000000000000000000000..7f79d2bb421b3c333b8f62d68d5af84481a5a88f
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/terrain/water_sand_2_1.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/terrain/water_sand_3_1.png b/game/modules/tome/data/gfx/shockbolt/terrain/water_sand_3_1.png
new file mode 100644
index 0000000000000000000000000000000000000000..c9c493ff4ab64e643c3ff589dfc9aca0950e8bbc
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/terrain/water_sand_3_1.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/terrain/water_sand_3i_1.png b/game/modules/tome/data/gfx/shockbolt/terrain/water_sand_3i_1.png
new file mode 100644
index 0000000000000000000000000000000000000000..8dd7efc37212a3b7aa4f34d06ddc7b77869de661
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/terrain/water_sand_3i_1.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/terrain/water_sand_4_1.png b/game/modules/tome/data/gfx/shockbolt/terrain/water_sand_4_1.png
new file mode 100644
index 0000000000000000000000000000000000000000..cb3c4a3b758011d357258ec053fbbccfd3865f05
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/terrain/water_sand_4_1.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/terrain/water_sand_6_1.png b/game/modules/tome/data/gfx/shockbolt/terrain/water_sand_6_1.png
new file mode 100644
index 0000000000000000000000000000000000000000..dedadf2ee0dd45797b2ea3c0f865c157e21397af
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/terrain/water_sand_6_1.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/terrain/water_sand_7_1.png b/game/modules/tome/data/gfx/shockbolt/terrain/water_sand_7_1.png
new file mode 100644
index 0000000000000000000000000000000000000000..94a4f962f72b31559fa373cad7f86819aee84a21
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/terrain/water_sand_7_1.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/terrain/water_sand_7i_1.png b/game/modules/tome/data/gfx/shockbolt/terrain/water_sand_7i_1.png
new file mode 100644
index 0000000000000000000000000000000000000000..4a2b2ca0597cb627afd5cb383331ec7ac6809f5a
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/terrain/water_sand_7i_1.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/terrain/water_sand_8_1.png b/game/modules/tome/data/gfx/shockbolt/terrain/water_sand_8_1.png
new file mode 100644
index 0000000000000000000000000000000000000000..6966e0b5d3be53615332d2777ee29b9531c4dfea
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/terrain/water_sand_8_1.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/terrain/water_sand_9_1.png b/game/modules/tome/data/gfx/shockbolt/terrain/water_sand_9_1.png
new file mode 100644
index 0000000000000000000000000000000000000000..af81dd4e0ffad0d8a1afc18bcb07ce9e60313a30
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/terrain/water_sand_9_1.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/terrain/water_sand_9i_1.png b/game/modules/tome/data/gfx/shockbolt/terrain/water_sand_9i_1.png
new file mode 100644
index 0000000000000000000000000000000000000000..dcc0adc9844be8630572c68184cc577cba57eb83
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/terrain/water_sand_9i_1.png differ
diff --git a/game/modules/tome/data/maps/zones/lake-nur.lua b/game/modules/tome/data/maps/zones/lake-nur.lua
index 5174626b886da028bc7466819a0b751daf965eb3..7e0c73abceaea634e7686de3504838cd5c65d9f0 100644
--- a/game/modules/tome/data/maps/zones/lake-nur.lua
+++ b/game/modules/tome/data/maps/zones/lake-nur.lua
@@ -24,7 +24,7 @@ endy = 45
 
 -- defineTile section
 defineTile("#", "WATER_WALL")
-defineTile("~", "WATER_FLOOR")
+defineTile("~", "DEEP_OCEAN_WATER")
 defineTile("*", "WATER_DOOR")
 defineTile("<", "OLD_FOREST")
 defineTile("-", "GRASS")
@@ -41,50 +41,50 @@ return [[
 TTTTTTTTTTTTTTTTTTTTTTTTTTTT<TTTTTTTTTTTTTTTTTTTTT
 TTTTTTTTTTTTTTTTTTTTTTTTTT---TTTTTTTTTTTTTTTTTTTTT
 TTTTTTTTTTTTTTTT......TTTT-TTTTTTTTTTTTTTTTTTTTTTT
-TTTTTTTTTTT..T..T....TT.......TTTTTTTTTTTTTTTTTTTT
-......TT.......TT..........T........TTTTTTTTTTTTTT
-..............T....TT......TTTT.......TTTTTTTTTTTT
-..TT~~~~.T....TT..TT.........................TT...
-.T~~~~~~~T~..................TT.....TT.....T...T..
-~~~~~~~~~~~~~~................~..........T......TT
-~~~~~~~~~~~~~~~~~~~~....~~~~~~~~~~~.......TT......
-~~~~...~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~.............
-~~~..T..~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~............
-~~~.TTT.~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~.......TT.
-~~~.TT..~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~........
-~~~~TT~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~.......
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~....
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~.
+TTTTTTTTTTT..TT...............TTTTTTTTTTTTTTTTTTTT
+......TT............................TTTTTTTTTTTTTT
+...................TT.....TT..........TTTTTTTTTTTT
+....~~~~......TT..TT.....................TTT.TTTTT
+..~~~~~~~..........................T.....TTT...TTT
+~~~~~~~~~~~~~~...........................TTT....TT
+~~~....~~~~~~~~~~~~~....~~~~~~~~~~~.......TT......
+~~......~~~~~~~~~~~~~~~~~~~~~~~~~~~~~.............
+~~...T...~~~~~~~~~~~~~~~~~~~~~~~~~~~~~............
+~~..TTT..~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~.......TT.
+~~..TT...~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~........
+~~..TT...~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~.......
+~~......~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~....
+~~~....~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~.
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~###~~~~
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~###~~~~~
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~.~~~~~~~~~~~~~###~~~~
+~~~~~~~~~~~~~~~~~~~~~~~~.~~~~~~~~~~~~~~~~~###~~~~~
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~####~~~~~
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#~~~~~~~~
 ~~~~~~~~~~~~~~~~#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-~~~~~~~~~~~~~~~~###~~~~~~~~~~~~~~~~~~~~~~~~~~T~~~~
-~~~~~~~~~~~~~~~~##~~~~~~~~~~~~~~~~~~~~~~~~~~T~~~~~
+~~~~~~~~~~~~~~~~###~~~~~~~~~~~~~~~~~~~~~~~~~TT~~~~
+~~~~~~~~~~~~~~~~##~~~~~~~~~~~~~~~~~~~~~~~~~~TT~~~~
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-~~~~~~~###~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-~~~~~~~#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-~~~~~~~##~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~..~~~~~~~~~~~~~~~~~~~
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~.T.~~~~~~~~~~~#~~~~~~~
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~.T~~~~~~~~~~~~#~~~~~~~
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~###~~~~~~
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~###~~~~~~
+~~..~~~###~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~..~~~#~~~~~~~~~~~~~~~~~~~~...~~~~~~~~~~~~~~~~~~~
+~~~~~~~##~~~~~~~~~~~~~~~~~~.....~~~~~~~~~~~~~~~~~~
+~~~~~~~~~~~~~~~~~~~~~~~~~~~.....~~~~~~~~~~~~~~~~~~
+~~~~~~~~~~~~~~~~~~~~~~~~~~~..T...~~~~~~~~~#~~~~~~~
+~~~~~~~~~~~~~~~~~~~~~~~~~~~..T...~~~~~~~~~#~~~~~~~
+~~~~~~~~~~~~~~~~~~~~~~~~~~~......~~~~~~~~###~~~~~~
+~~~~~~~~~~~.~~~~~~~~~~~~~~~~....~~~~~~~~~###~~~~~~
 ~~~~~~~~~~~~~~~~~~~~########~~~~~~~~~~~~~#~~~~~~~~
 ~~~~~~~~~~~~~~~~~~###~~~~~~###~~~~~~~~~~~~~~~~~~~~
 ~~~~~~~~~~~~~~~~~##~~~~~~~~~~#~~~~~~~~~~~~~~~~~~~~
 ~~~T~~~~~~~~~~~~##~~~~~~~~~~~###~~~~~~~~~~~~~~~~~~
 ~~~~~~~~~~~~~~~~#~~~~~~~~~~~~~~#~~~~~~~~~~~~~~~~~~
 ~~~~~~~~~~~~~~~##~~~~~~~~~~~~>~##~~~~~~~~~~~~~~~~~
-~~~~~~~~~~~~~~~##~~~~~~~~~~~~~~##~~~~~~~~~~~~~~~~~
+~~~~~~~~~~~~~~~##~~~~~~~~~~~~~~##~~~~~~~~~~~.~~~~~
 ~~~~~~~~~~~~~~~~#~~#########~~##~~~~~~~~~~~~~~~~~~
 ~~~~~~~~~~~~~~~~##*#~~~~~~~####~~~~~~~~~~~~~~~~~~~
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~]]
\ No newline at end of file
diff --git a/game/modules/tome/data/zones/briagh-lair/zone.lua b/game/modules/tome/data/zones/briagh-lair/zone.lua
index 667728367826d7e8b3a7c8809d62c19008779682..f80ce17b449f7effbd9af00efbf8de8c8199e064 100644
--- a/game/modules/tome/data/zones/briagh-lair/zone.lua
+++ b/game/modules/tome/data/zones/briagh-lair/zone.lua
@@ -33,11 +33,11 @@ return {
 			class = "engine.generator.map.Cavern",
 			zoom = 16,
 			min_floor = 1200,
-			floor = "SAND",
+			floor = "UNDERGROUND_SAND",
 			wall = "SANDWALL_STABLE",
 			up = "SAND_LADDER_UP",
 			down = "SAND_LADDER_DOWN",
-			door = "SAND",
+			door = "UNDERGROUND_SAND",
 		},
 		actor = {
 			class = "engine.generator.actor.Random",
diff --git a/game/modules/tome/data/zones/sandworm-lair/zone.lua b/game/modules/tome/data/zones/sandworm-lair/zone.lua
index 26dc32e5217af862f85afec8b3888b15a9a6dede..2e27843e9d611aa7d66f85cbfcf4d65e12836ac8 100644
--- a/game/modules/tome/data/zones/sandworm-lair/zone.lua
+++ b/game/modules/tome/data/zones/sandworm-lair/zone.lua
@@ -37,11 +37,11 @@ return {
 			nb_rooms = 10,
 			lite_room_chance = 0,
 			rooms = {"forest_clearing"},
-			['.'] = "SAND",
+			['.'] = "UNDERGROUND_SAND",
 			['#'] = "SANDWALL",
 			up = "SAND_LADDER_UP",
 			down = "SAND_LADDER_DOWN",
-			door = "SAND",
+			door = "UNDERGROUND_SAND",
 		},
 		actor = {
 			class = "mod.class.generator.actor.Sandworm",
diff --git a/tiled-maps/lake-nur.tmx b/tiled-maps/lake-nur.tmx
index f16aa19117d06b2a65875e5b8d696cf8dce41901..09525f7a9d9cc0466663ac492c386d34e41525fd 100644
--- a/tiled-maps/lake-nur.tmx
+++ b/tiled-maps/lake-nur.tmx
@@ -58,8 +58,8 @@
   </tile>
  </tileset>
  <layer name="Terrain" width="50" height="50">
-  <data encoding="base64" compression="gzip">
-   H4sIAAAAAAAAA+2YzQ3DIAxG4ZKZO1U7T6UM0DF6ikotQ2zwnywOn9QqEN6zKUpz1FIOwzyL7XrSeZdfvFmwnAUP5uHNCpl7n6FDzxHz1K4nhWU0Bo6njJH0mGHi7jVJHzjvU/5DZV6tC7eGPSbI3+a6rs1Budb7PuIfZdWFcw/KXp31oPpJ1eZu347uJe2o2WtsvsS+s3bBzqa2h14e3L3W8/DuB7c/cLzW71/bxZtNysmbR8rJm2FnZ2cnY2oTb5btkMMjwxrWPbdaU+N5PIPDjm0ynHWXhzeDZD+8OaImw3/q9j0fd294s2Me3HnRPGaS6dy09oDP2BLP3F78keo64xClvrPnCJcrYl9WWKJ4zNb0tTg/iofUfGkXyEU5dyM5tDyPes+V5f2NZr7RhiAUECcAAA==
+  <data encoding="base64" compression="zlib">
+   eJztmE0OAiEMhWEzZ/ZUeh6TOYDHcOmkYWjpP8jiJcYReV8f0wBHLeVw1LP4zqetd/kp2ktLZ2mrxRHtFXrGGCjyrqfEqyefhQeNukg5PkBUz5b5Qb89DuifwmLhl8LR+r7nPwNbj+P6rOdNg0+rNti6xf6Dm5dEnMxaYyH3DCxw3GgPiOS5+rzjiM5jNJ9ZODAW7DfR3qlM1GeZNZPXra2trQhx+2S9aBbPmRi0VMs6HCvM4Z25x3zSewWMw6tuVhxbNmqdOWbsdXccVvN4nn20s5jp3PxPHJz7mEzv6Goco2tLu29qrGfO+xHR/+EeW2PPHeU/U105DFnqy9lHcuqbMReJlywc3Jq+hOOzcEjGW+1lKvhM7btZsoB+HhX3tcr9jaW+H1qk3A==
   </data>
  </layer>
 </map>