diff --git a/game/modules/tome/class/NicerTiles.lua b/game/modules/tome/class/NicerTiles.lua
index 12092031dd82a1ae9ee1e9e101c6d900b41f0838..3d03b7f5191a0e121b7afcdf82d50a5830854ee5 100644
--- a/game/modules/tome/class/NicerTiles.lua
+++ b/game/modules/tome/class/NicerTiles.lua
@@ -535,7 +535,7 @@ function _M:editTileGenericBorders(level, i, j, g, nt, type)
 		if nt.forbid[g9] then g9 = type end
 	end
 
-	local id = "genbord:"..table.concat({type,tostring(g1==g5),tostring(g2==g5),tostring(g3==g5),tostring(g4==g5),tostring(g5==g5),tostring(g6==g5),tostring(g7==g5),tostring(g8==g5),tostring(g9==g5)}, ",")
+	local id = "genbord:"..table.concat({g.define_as or "--",type,tostring(g1==g5),tostring(g2==g5),tostring(g3==g5),tostring(g4==g5),tostring(g5==g5),tostring(g6==g5),tostring(g7==g5),tostring(g8==g5),tostring(g9==g5)}, ",")
 
 	-- Sides
 	if g5 ~= g8 then self:edit(i, j, id, nt[g8.."8"] or nt["default8"]) end
@@ -578,7 +578,7 @@ function _M:editTileGenericWalls(level, i, j, g, nt, type)
 		if nt.forbid[g9] then g9 = type end
 	end
 
-	local id = "genwall:"..table.concat({type,tostring(g1==g5),tostring(g2==g5),tostring(g3==g5),tostring(g4==g5),tostring(g5==g5),tostring(g6==g5),tostring(g7==g5),tostring(g8==g5),tostring(g9==g5)}, ",")
+	local id = "genwall:"..table.concat({g.define_as or "--",type,tostring(g1==g5),tostring(g2==g5),tostring(g3==g5),tostring(g4==g5),tostring(g5==g5),tostring(g6==g5),tostring(g7==g5),tostring(g8==g5),tostring(g9==g5)}, ",")
 
 	-- Sides
 	if     g5 ~= g8 then self:edit(i, j, id, nt[g8.."8"] or nt["default8"]) end
@@ -625,7 +625,7 @@ function _M:editTileGenericSandWalls(level, i, j, g, nt, type)
 		if nt.forbid[g9] then g9 = type end
 	end
 
-	local id = "sandwall:"..table.concat({type,tostring(g1==g5),tostring(g2==g5),tostring(g3==g5),tostring(g4==g5),tostring(g5==g5),tostring(g6==g5),tostring(g7==g5),tostring(g8==g5),tostring(g9==g5)}, ",")
+	local id = "sandwall:"..table.concat({g.define_as or "--",type,tostring(g1==g5),tostring(g2==g5),tostring(g3==g5),tostring(g4==g5),tostring(g5==g5),tostring(g6==g5),tostring(g7==g5),tostring(g8==g5),tostring(g9==g5)}, ",")
 
 	-- Sides
 	if     g5 ~= g8 and g5 ~= g7 and g5 ~= g9 then
diff --git a/game/modules/tome/data/general/npcs/jelly.lua b/game/modules/tome/data/general/npcs/jelly.lua
index 0c2876eb8eadfc0d07c46bfd47d55498ada13bc4..dbf70610aaed48f03d8f96ae362793428b2bca63 100644
--- a/game/modules/tome/data/general/npcs/jelly.lua
+++ b/game/modules/tome/data/general/npcs/jelly.lua
@@ -34,9 +34,11 @@ newEntity{
 	never_move = 1,
 	rank = 2,
 	blind_immune = 1,
+	poison_immune = 1,
 	size_category = 3,
 	infravision = 10,
 	no_breath = 1,
+	no_breath = 1,
 
 	drops = resolvers.drops{chance=60, nb=1, {type="money"} },
 
diff --git a/game/modules/tome/data/general/npcs/molds.lua b/game/modules/tome/data/general/npcs/molds.lua
index 7f03fbf777b2ae04066f069ba178708d632cc6be..e00a2efa9e2360995c6cbce621208a602abf2566 100644
--- a/game/modules/tome/data/general/npcs/molds.lua
+++ b/game/modules/tome/data/general/npcs/molds.lua
@@ -34,7 +34,9 @@ newEntity{
 	combat_armor = 1, combat_def = 1,
 	never_move = 1,
 	blind_immune = 1,
+	poison_immune = 1,
 	fear_immune = 1,
+	no_breath = 1,
 	rank = 1,
 	size_category = 1,
 }
diff --git a/game/modules/tome/data/gfx/shockbolt/npc/humanoid_human_celia.png b/game/modules/tome/data/gfx/shockbolt/npc/humanoid_human_celia.png
new file mode 100644
index 0000000000000000000000000000000000000000..27a55fa7607a7de8955283f0539eb1a4717db799
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/npc/humanoid_human_celia.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/object/plant_rose_red_rose.png b/game/modules/tome/data/gfx/shockbolt/object/plant_rose_red_rose.png
new file mode 100644
index 0000000000000000000000000000000000000000..b110b43f3a6d1e1b813bba6c62ff57de3b62721b
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/object/plant_rose_red_rose.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/terrain/grave_opened_01_64.png b/game/modules/tome/data/gfx/shockbolt/terrain/grave_opened_01_64.png
new file mode 100644
index 0000000000000000000000000000000000000000..d0176e6eb1776a9f675cd7fbbb8b7ab204c1a010
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/terrain/grave_opened_01_64.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/terrain/grave_opened_02_64.png b/game/modules/tome/data/gfx/shockbolt/terrain/grave_opened_02_64.png
new file mode 100644
index 0000000000000000000000000000000000000000..9131672f808953e6be625b7011f9fd5187bcce98
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/terrain/grave_opened_02_64.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/terrain/grave_opened_03_64.png b/game/modules/tome/data/gfx/shockbolt/terrain/grave_opened_03_64.png
new file mode 100644
index 0000000000000000000000000000000000000000..aa62c6501a423847001965099adeac2e5bc736b9
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/terrain/grave_opened_03_64.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/terrain/grave_unopened_01_64.png b/game/modules/tome/data/gfx/shockbolt/terrain/grave_unopened_01_64.png
new file mode 100644
index 0000000000000000000000000000000000000000..c6449142e6ee11a5f87c94606d2aece7ab58554a
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/terrain/grave_unopened_01_64.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/terrain/grave_unopened_02_64.png b/game/modules/tome/data/gfx/shockbolt/terrain/grave_unopened_02_64.png
new file mode 100644
index 0000000000000000000000000000000000000000..abb2a6624e424c51b54f473cb62214ceea2039f3
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/terrain/grave_unopened_02_64.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/terrain/grave_unopened_03_64.png b/game/modules/tome/data/gfx/shockbolt/terrain/grave_unopened_03_64.png
new file mode 100644
index 0000000000000000000000000000000000000000..68ce4798ceeba1b3035d663b5cb6c4b04e7bc3dc
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/terrain/grave_unopened_03_64.png differ
diff --git a/game/modules/tome/data/lore/last-hope.lua b/game/modules/tome/data/lore/last-hope.lua
index b76e97196eb46094fcffc98615cfff200bc1a68a..6349f75faf7d8518f1a52c4787b6e7282bc049ef 100644
--- a/game/modules/tome/data/lore/last-hope.lua
+++ b/game/modules/tome/data/lore/last-hope.lua
@@ -267,7 +267,8 @@ RIP Cecil Farion
 Noble in mind
 Pure in spirit
 Rest now from the burdens of the flesh
-#{normal}#]]}
+
+#{normal}#A fresh rose lies here]]}
 
 i=i+1 newLore{ id = "last-hope-graveyard-"..i, category = "last hope graveyard", name = "gravestone", always_pop = true, lore = [[#{bold}#
 Here lies Golan of Derth
@@ -398,4 +399,126 @@ Praise the name
 Of he who helped us band together
 #{normal}#]]}
 
+i=i+1 newLore{ id = "last-hope-graveyard-"..i, category = "last hope graveyard", name = "gravestone", always_pop = true, lore = [[#{bold}#
+Here rests Raymond Gaustadnes
+#{normal}#84 - 120#{italic}#
+The Pixels finally got him...
+#{normal}#]]}
+
+i=i+1 newLore{ id = "last-hope-graveyard-"..i, category = "last hope graveyard", name = "gravestone", always_pop = true, lore = [[#{bold}#
+Here lies Crokar
+#{normal}#86 - 113#{italic}#
+His love of trolls proved too dangerous a hobby
+#{normal}#]]}
+
+i=i+1 newLore{ id = "last-hope-graveyard-"..i, category = "last hope graveyard", name = "gravestone", always_pop = true, lore = [[#{bold}#
+Lyrissa the Wyrmfriend
+#{normal}#93 - 116#{italic}#
+Eaten by dragons
+#{normal}#]]}
+
+i=i+1 newLore{ id = "last-hope-graveyard-"..i, category = "last hope graveyard", name = "gravestone", always_pop = true, lore = [[#{bold}#
+Here rests Weldeth the Deserter
+#{normal}#86 - 103#{italic}#
+Fled from battle
+Bereft of pride
+On a comrade's sword
+He quickly died
+#{normal}#]]}
+
+i=i+1 newLore{ id = "last-hope-graveyard-"..i, category = "last hope graveyard", name = "gravestone", always_pop = true, lore = [[#{italic}#
+This gravestone has been desecrated
+#{normal}#]]}
+
+i=i+1 newLore{ id = "last-hope-graveyard-"..i, category = "last hope graveyard", name = "gravestone", always_pop = true, lore = [[#{bold}#
+Seria Swanfoot
+#{normal}#56 - 109#{italic}#
+May your feet now walk amongst the stars
+#{normal}#]]}
+
+i=i+1 newLore{ id = "last-hope-graveyard-"..i, category = "last hope graveyard", name = "gravestone", always_pop = true, lore = [[#{bold}#
+Eric and Erik
+#{normal}#66 - 114#{italic}#
+Met their death investigating dark light
+Alas, the pit was darker still
+#{normal}#]]}
+
+i=i+1 newLore{ id = "last-hope-graveyard-"..i, category = "last hope graveyard", name = "gravestone", always_pop = true, lore = [[#{bold}#
+Hoblo Sureshot
+#{normal}#94 - 120#{italic}#
+Death by ricochet
+#{normal}#]]}
+
+i=i+1 newLore{ id = "last-hope-graveyard-"..i, category = "last hope graveyard", name = "gravestone", always_pop = true, lore = [[#{bold}#
+Grave of the Unknown Mason
+#{normal}#??? - ???#{italic}#
+In dedication to all those lost building the dungeons of Maj'Eyal
+#{normal}#]]}
+
+i=i+1 newLore{ id = "last-hope-graveyard-"..i, category = "last hope graveyard", name = "gravestone", always_pop = true, lore = [[#{bold}#
+Here lies Albert Deathproof
+#{normal}#75 - ???#{italic}#
+Buried alive
+#{normal}#]]}
+
+i=i+1 newLore{ id = "last-hope-graveyard-"..i, category = "last hope graveyard", name = "gravestone", always_pop = true, lore = [[#{bold}#
+RIP Legless Jack
+#{normal}#26 - 98#{italic}#
+His life's dream was to dance
+But even dreams must die
+#{normal}#]]}
+
+i=i+1 newLore{ id = "last-hope-graveyard-"..i, category = "last hope graveyard", name = "gravestone", always_pop = true, lore = [[#{bold}#
+The Blightbringer
+#{normal}#14 - 46#{italic}#
+Do not disturb
+#{normal}#]]}
+
+i=i+1 newLore{ id = "last-hope-graveyard-"..i, category = "last hope graveyard", name = "gravestone", always_pop = true, lore = [[#{bold}#
+Matthew the Brawler
+#{normal}#101 - 122#{italic}#
+Killed in a ring of blood
+#{normal}#]]}
+
+i=i+1 newLore{ id = "last-hope-graveyard-"..i, category = "last hope graveyard", name = "gravestone", always_pop = true, lore = [[#{bold}#
+Sarusan the Timeraper
+#{normal}#102 - 87#{italic}#
+He who wields Time
+Dies by Time
+#{normal}#]]}
+
+i=i+1 newLore{ id = "last-hope-graveyard-"..i, category = "last hope graveyard", name = "gravestone", always_pop = true, lore = [[#{bold}#
+Palia the Poacher
+#{normal}#94 - 118#{italic}#
+Shown no mercy in the cursed woods
+#{normal}#]]}
+
+i=i+1 newLore{ id = "last-hope-graveyard-"..i, category = "last hope graveyard", name = "gravestone", always_pop = true, lore = [[#{bold}#
+Here lies the merchant Dalio
+#{normal}#83 - 121#{italic}#
+Slain by an assassin's deadly poison
+#{normal}#]]}
+
+i=i+1 newLore{ id = "last-hope-graveyard-"..i, category = "last hope graveyard", name = "gravestone", always_pop = true, lore = [[#{bold}#
+Here lies Jazak
+#{normal}#92 - 113#{italic}#
+He played with the wildest fires
+And got burnt
+#{normal}#]]}
+
+i=i+1 newLore{ id = "last-hope-graveyard-"..i, category = "last hope graveyard", name = "gravestone", always_pop = true, lore = [[#{bold}#
+RIP Gedis the Paladin
+#{normal}#?? - 118#{italic}#
+Bright star from foreign lands
+We weep your fallen light
+#{normal}#]]}
+
+i=i+1 newLore{ id = "last-hope-graveyard-"..i, category = "last hope graveyard", name = "gravestone", always_pop = true, lore = [[#{bold}#
+Foursaw the Clown
+#{normal}#82 - 114#{italic}#
+We laughed
+Until we saw
+The joke was over
+#{normal}#]]}
+
 print("Made "..i.." last hope graveyard stones")
diff --git a/game/modules/tome/data/maps/zones/last-hope-graveyard.lua b/game/modules/tome/data/maps/zones/last-hope-graveyard.lua
index a23755b669f0bbcbdfce60236e11f03cf9cd860c..eaa05fe5a8c879a18d0bedcfdf8f091f1b1962ce 100644
--- a/game/modules/tome/data/maps/zones/last-hope-graveyard.lua
+++ b/game/modules/tome/data/maps/zones/last-hope-graveyard.lua
@@ -23,7 +23,7 @@ endx = 18
 endy = 18
 
 local list = {}
-for i = 1, 25 do list[#list+1] = i end
+for i = 1, 44 do list[#list+1] = i end
 
 -- defineTile section
 defineTile("*", function() local v = rng.tableRemove(list) if not v then v = "" end return "GRAVE"..v end)
diff --git a/game/modules/tome/data/zones/last-hope-graveyard/grids.lua b/game/modules/tome/data/zones/last-hope-graveyard/grids.lua
index 0c03c2b2d44b04616091a8af2fed8c3ca6c69fa2..1dd1ba1518b04d8e035c70296f173524ec59b06c 100644
--- a/game/modules/tome/data/zones/last-hope-graveyard/grids.lua
+++ b/game/modules/tome/data/zones/last-hope-graveyard/grids.lua
@@ -21,6 +21,8 @@ load("/data/general/grids/basic.lua")
 load("/data/general/grids/forest.lua")
 load("/data/general/grids/water.lua")
 
+local grass_editer = { method="borders_def", def="grass"}
+
 newEntity{
 	define_as = "SWAMPTREE",
 	type = "wall", subtype = "grass",
@@ -46,16 +48,17 @@ newEntity{ base = "FLOOR", define_as = "ROAD",
 newEntity{ base = "FLOOR", define_as = "GRAVE",
 	type = "wall", subtype = "grass",
 	name="grave",
-	display='&', image="terrain/grave.png",
+	display='&', image="terrain/grass.png",
 	does_block_move = true,
 	pass_projectile = true,
+	nice_editer = grass_editer,
 	block_move = function(self, x, y, who, act, couldpass)
 		if not who or not who.player or not act then return true end
 		if self.lore then who:learnLore(self.lore) end
 		return true
 	end,
 }
-for i = 1, 25 do newEntity{ base = "GRAVE", define_as = "GRAVE"..i, lore="last-hope-graveyard-"..i} end
+for i = 1, 44 do newEntity{ base = "GRAVE", define_as = "GRAVE"..i, lore="last-hope-graveyard-"..i, add_displays={class.new{z=18,image="terrain/grave_unopened_0"..rng.range(1,3).."_64.png", display_y=-1, display_h=2}},} end
 
 newEntity{ base = "FLOOR", define_as = "COFFIN",
 	name="coffin",
@@ -78,7 +81,7 @@ newEntity{ base = "FLOOR", define_as = "COFFIN_OPEN",
 
 newEntity{ define_as = "MAUSOLEUM",
 	name = "open mausoleum",
-	image = "terrain/stone_road1.png", add_mos = {{image="terrain/dungeon_entrance01.png"}},
+	image = "terrain/stone_road1.png", add_displays = {class.new{z=5, image="terrain/dungeon_entrance01.png"}},
 	type = "floor", subtype = "floor",
 	display = '>', color_r=255, color_g=255, color_b=0,
 	notice = true,
diff --git a/game/modules/tome/data/zones/last-hope-graveyard/npcs.lua b/game/modules/tome/data/zones/last-hope-graveyard/npcs.lua
index 684af03b977ee876722a2a7fd1135c73a3b54a3b..d46032285d4374a5a4cf8ed9c04f3cf38b3ccc0f 100644
--- a/game/modules/tome/data/zones/last-hope-graveyard/npcs.lua
+++ b/game/modules/tome/data/zones/last-hope-graveyard/npcs.lua
@@ -30,6 +30,7 @@ newEntity{ define_as = "CELIA",
 	type = "humanoid", subtype = "human", image = "npc/humanoid_human_celia.png",
 	female = true,
 	display = "p", color=colors.GREY,
+	resolvers.nice_tile{image="invis.png", add_mos = {{image="npc/humanoid_human_celia.png", display_h=2, display_y=-1}}},
 	desc = [[A tall woman stands before you in a stained robe. Her sallow skin is marked by pox and open sores, but her eyes are bright and keen. The bulge around her abdomen would indicate that she is several months pregnant.]],
 	autolevel = "caster",
 	stats = { str=12, dex=17, mag=22, wil=22, con=12 },
diff --git a/game/modules/tome/dialogs/Birther.lua b/game/modules/tome/dialogs/Birther.lua
index f5c0d465af397a79831c0a09c9dd151ddd706f0c..de8dfda5f0bdacc26be9ed106ff8b7e7f859a2c4 100644
--- a/game/modules/tome/dialogs/Birther.lua
+++ b/game/modules/tome/dialogs/Birther.lua
@@ -966,6 +966,7 @@ function _M:selectTile()
 		"npc/humanoid_human_bandit.png",
 		"npc/humanoid_human_ben_cruthdar__the_cursed.png",
 		"npc/humanoid_human_blood_mage.png",
+		"npc/humanoid_human_celia.png",
 		"npc/humanoid_human_cryomancer.png",
 		"npc/humanoid_human_cutpurse.png",
 		"npc/humanoid_human_derth_guard.png",