diff --git a/game/engines/default/engine/Store.lua b/game/engines/default/engine/Store.lua
index 9f78f65fe7bbb88cacc92a50e8aecbfbac3cba8d..b3a426950b8dcf019606e50ce9408e06c6a4562e 100644
--- a/game/engines/default/engine/Store.lua
+++ b/game/engines/default/engine/Store.lua
@@ -68,7 +68,9 @@ function _M:loadup(level, zone, force_nb)
 	local i = 1
 	local rngfill = force_nb or (rng.range(s.min_fill, s.max_fill) - #inven)
 	while i <= rngfill do
-		local filter = table.clone(util.getval(s.filters))
+		local filter = util.getval(s.filters)
+		if not filter then break end
+		filter = table.clone(filter)
 		local e
 		if not filter.defined then e = zone:makeEntity(level, "object", filter, nil, true)
 		else e = zone:makeEntityByName(level, "object", filter.defined) end
diff --git a/game/modules/tome/data/general/stores/basic.lua b/game/modules/tome/data/general/stores/basic.lua
index df53d91b22b1a2b8bbbb4ad1c5e4400cc2e5cc64..6b7c264835aeb77032adf67c0c8815ca7fb0b636 100644
--- a/game/modules/tome/data/general/stores/basic.lua
+++ b/game/modules/tome/data/general/stores/basic.lua
@@ -272,7 +272,6 @@ newEntity{
 		purse = 10,
 		empty_before_restock = false,
 		filters = {
-			{type="scroll", subtype="rune", id=true},
 		},
 		fixed = {
 			{id=true, defined="FOUNDATION_NOTE1"},
@@ -284,6 +283,8 @@ newEntity{
 			{id=true, defined="RACES_NOTE0"},
 			{id=true, defined="RACES_NOTE1"},
 			{id=true, defined="RACES_NOTE2"},
+			{id=true, defined="SOUTHSPAR_NOTE1"},
+			{id=true, defined="SOUTHSPAR_NOTE2"},
 		},
 	},
 }
diff --git a/game/modules/tome/data/lore/last-hope.lua b/game/modules/tome/data/lore/last-hope.lua
index 9468e5fe9791ba6affb2b0743d5950cf06145579..5c4a01f929b9fa56578638ece7a19d50fb29fb74 100644
--- a/game/modules/tome/data/lore/last-hope.lua
+++ b/game/modules/tome/data/lore/last-hope.lua
@@ -146,3 +146,76 @@ I am cold and alone in this chilly crypt, thinking back on my times of warmth wi
 
 I must live. For you, my love, I will live.]]
 }
+
+newLore{
+	id = "southspar-note-1",
+	category = "southspar",
+	name = "The Pale King, part one",
+	lore = [[#{italic}#A study into Southspar's most unusual ruler.#{normal}#
+
+Chances are you haven't heard of Southspar.
+
+And why would you have? It was naught but a tiny, provincial island kingdom off the coast of Tar'Eyal that existed within the Ages of Allure and Dusk. By all accounts, Southspar was a pleasant place to live; temperate climate, healthy trade relations with mainland human kingdoms, and by great luck, the island upon which the kingdom sat held great deposits of the much-valued metal stralite.
+
+Despite this good fortune though, Southspar was doomed to mediocrity. Why? The actions of its ruler. By all accounts a bumbling, octogenarian dotard, his name lost to the mists of time, this mouldy monarch mismanaged Southspar almost to its demise. The Dwarves of the Iron Throne, having heard of the stralite beneath the island, manipulated the king into mining it and selling it to them for a fraction of its true worth. Also, despite Southspar's decidedly puny military power, the king saw fit to send whatever troops he could muster to aid mainland human kingdoms in their great and many wars against the halflings, who up to this point had barely registered Southspar's existence. Not only were the undertrained, ill-equipped troops crushed like vermin before the superior halfling forces, but also these foolhardy attacks succeeded in attracting the halflings' attention to their secluded island. Almost immediately, the raids began.
+
+From what records remain, the king was mystified by the decline of his nation, believing to the end that every action he took had been the right one. He passed away soon after the halfling raids began. Whether it was suicide, assassination, or simple old age is unknown. The king never married and had no children, the only remaining member of his family being a distant cousin, a young man named Drake.
+
+And so it was that Drake ascended to the throne, and Southspar entered a golden age.
+
+#{bold}#1. Drake and the Halfling Horde.#{normal}#
+
+To the newly crowned Drake, the most obvious and immediate threat to Southspar was the growing raids and sorties being held by the halflings. To this end, he ordered a complete and total reconstruction of Southspar's military, turning them from a ragtag bunch of militia into a small yet devastatingly efficient engine of war. Drake knew that the only advantage his forces held over the halflings was their knowledge of the island, and so bade them to travel stealthily, carry small, armour-defeating stralite knives rather than spears and swords, and only engage with the halflings strictly on their own terms. Southspar's newly assembled "Army of Rogues" was a success. Although the halflings were great in number, strike after surgical strike from Drake's army weighed heavily on their morale, and finally, grumpily declaring Southspar "not worth the bother", the halfling forces withdrew.
+
+Southspar celebrated its peace and it's newly found military might, but for Drake, the celebration was short-lived. The stralite he had used to craft his Army of Rogues' knives and armour was stralite that wasn't going into the Dwarves' pockets, and they were far from happy. Drake formulated a plan - by the time he was through, the Dwarves would be even further from happy.
+
+#{bold}#2. Drake and the Stralite Stratagem.#{normal}#
+
+The Dwarves have always been a secretive race. Even now only a select few know the location of their "Iron Council", and in the days of Southspar there were still those who considered Dwarves nothing but myth. Being a monarch in possession of large amounts of stralite can open even the most concealed of doors, however... Drake had requested an audience with the Iron Council, and the Dwarves, expecting said audience to be a humble apology and promises of further stralite for the gold they were paying, readily accepted.
+
+What they got, in reality, was quite different. Gone was the ineffectual king of Southspar's past, and now the Dwarves found themselves facing a young, hard-eyed human who was demanding that the amount of gold that the Dwarves were paying for Southspar's stralite be increased twenty-fold.
+
+To say the Dwarves scoffed at this would be an understatement; open, derisive laughter hits nearer the mark. Despite Southspar's recent repulsion of the halflings, the Dwarves of the Iron Throne saw no problem in taking Southspar's stralite by force. In his heart, Drake knew they could accomplish this, and it was to this end that he had brought the small pouch around his neck to the Council.
+
+Drake held the small, drakeskin pouch high, opened it and emptied its contents onto the floor: Stralite, ground to dust, muddied with dirt and base metals, made unusable and worthless. The Dwarves of the Council gasped in horror at this waste, one (if rumours are to be believed) even fainting on the spot. Drake went on to say that, if his demands were not met, the entirety of the stralite beneath his island would meet the same fate as the stralite cast upon the chamber's floor.
+
+By the time Drake left the Iron Council, the Dwarves had agreed to pay thirty times the previous amount.
+]]
+}
+
+newLore{
+	id = "southspar-note-2",
+	category = "southspar",
+	name = "The Pale King, part two",
+	lore = [[#{bold}#3. Drake and the Conclave Mages.#{normal}#
+
+With its borders unassailed, ands its coffers rapidly filling with Dwarven gold, many believed that the fortune of Southspar could not increase any further. Drake, however, had one last task to accomplish, and it regarded the Conclave.
+
+For a long time, a small number of Conclave mages had made their home in Southspar. The remote location and the doddering nature of its old king meant that they could perform experiments and practice magic that would have been disallowed on the mainland. Being reclusive by nature, only a few of their group had heard of the rise of the new king, and none of them had cared much. Drake's royal guards breaking down the door of their study, followed by the king himself, gave them cause to care. Drake had for them an ultimatum:
+
+"This is the kingdom of Southspar, my kingdom, and so everything within her borders must be within my control. This applies to her people, her land, her resources, and now her magic. I shall allow you to remain here in Southspar on one condition: You become members of my royal court, obey my commands, and use your magic for the betterment of the kingdom. When un-needed you may tend to your Conclave matters as you will, but your greatest loyalty will be to me. Do you accept?"
+
+The Conclave mages' response? Laughter. But this laughter was not the mocking laughter of the Dwarves, but laughter of disbelief. As recorded, the mages' response went as:
+
+"King Drake! You needn't have bothered us with such a stern ultimatum! A simple request would have sufficed. True, in the past we may have chosen to reside here for simple seclusion, but it is hard to ignore Southspar's rising star. This kingdom's glory shall continue to grow, and we want to be a part of it. We accept."
+
+Freedom from halfling attacks, Dwarven fortunes, and now the magic of the Conclave blessed Southspar. What, the common people thought, could possibly happen next?
+
+Mere weeks after the Conclave joined the royal court, Drake fell ill and died.
+
+#{bold}#4. Drake and the Empty Throne.#{normal}#
+
+Drake was dead, and Southspar's people were struck with depression and outright horror. Their king, who was fast on his way to making their kingdom one of the greatest in Maj'Eyal, was no more. The throne lay empty; not a single soul vied for the now vacant position of king. As far as Southspar's citizens were concerned, it was Drake's throne, nobody else's.
+
+The norm in tales like this would be that the kingdom slowly managed to get back on its feet, recover from the loss of their king, and finally return to a state resembling normalcy. Not so for Southspar. Drake's demise had left a wound that was not healing, and it was clear that something had to be done. One of the men closest to Drake in his life, his chancellor, left abruptly on a mysterious "errand", hoping that the kingdom would not crumble before his return. After a period of some months he did return, and his first port of call? The study of the Conclave mages. He held in his hand a tome, bound in skin and marked with blood-red runes. Its subject matter was obvious: Necromancy. The chancellor had but one command for the mages:
+
+"Bring him back."
+
+#{bold}#5. Drake and the Pale Kingdom.#{normal}#
+
+Here, sadly, definitive facts on Southspar and Drake's fate vanish. Some say that Drake's rebirth was a resounding success, and Southspar's star continued to rise as the now skeletal Drake retook the throne, the gaze from his exposed skull unchanged from his mortal visage. Others believe that the madness that grasps those returned from the grave took him, and with the new powers that the Conclave had blessed him with began a reign of terror that drowned Southspar in blood. The only fact that can be known for certain was the new name his subjects gave to him in his death: Pale King Drake, the Pale King, or simply Pale Drake.
+
+I leave you with a copy of one of the last pieces of Southspar's history, a partially destroyed scrap of parchment, supposedly written moments before the Cataclysm and Southspar's destruction, falling beneath the waves along with the rest of Tar'Eyal.
+
+"Time grows pressi... ... ome in the boat... ... found. The binding w... a success. Now, to the sea, to l... ... ew, and Dreadfe... ... oble king. Rot in my new du... as you will!"]]
+}
diff --git a/game/modules/tome/data/maps/towns/last-hope.lua b/game/modules/tome/data/maps/towns/last-hope.lua
index 801b441dc5b66d823c125612d518e38955d99bb9..5b4e4b7231b4a2a1f500ed6aa8f6ed1542d8bcd3 100644
--- a/game/modules/tome/data/maps/towns/last-hope.lua
+++ b/game/modules/tome/data/maps/towns/last-hope.lua
@@ -41,6 +41,7 @@ defineTile('7', "HARDWALL", nil, nil, "CLOTH_ARMOR_STORE")
 defineTile('8', "HARDWALL", nil, nil, "HERBALIST")
 defineTile('9', "HARDWALL", nil, nil, "RUNES")
 defineTile('A', "HARDWALL", nil, nil, "ARCHER_WEAPON_STORE")
+defineTile('B', "HARDWALL", nil, nil, "LIBRARY")
 
 defineTile('E', "HARDWALL", nil, nil, "ELDER")
 defineTile('T', "HARDWALL", nil, nil, "TANNEN")
@@ -103,7 +104,7 @@ ttt~~~~#     ##      _________       ###   #~~~~tt
 tttt~~~##   ###     #         #    ####   ##~~~ttt
 tttt~~~~##   ####   ###     ###    ##H   ##~~~~ttt
 ttttt~~~~#    ###    #### ####      #    #~~~~tttt
-tttttt~~~##    #      9######           ##~~~ttttt
+tttttt~~~##    #      9####B#           ##~~~ttttt
 tttttt~~~~##            ###            ##~~~~ttttt
 ttttttt~~~~###          ###          ###~~~~tttttt
 tttttttt~~~~~##         ###         ##~~~~~ttttttt
diff --git a/game/modules/tome/data/zones/town-last-hope/objects.lua b/game/modules/tome/data/zones/town-last-hope/objects.lua
index b375e5010f96e3b734c29ff2fcd8997639731ec8..401924890395b59b00d7b1a8287cbb4e6b5a41f2 100644
--- a/game/modules/tome/data/zones/town-last-hope/objects.lua
+++ b/game/modules/tome/data/zones/town-last-hope/objects.lua
@@ -42,3 +42,15 @@ newEntity{ base = "BASE_LORE",
 	cost = 2,
 }
 end
+
+for i = 1, 2 do
+newEntity{ base = "BASE_LORE",
+	define_as = "SOUTHSPAR_NOTE"..i,
+	subtype = "southspar", unique=true, no_unique_lore=true, not_in_stores=false,
+	name = "the Pale King part "..(i==1 and "one" or "two"), lore="southspar-note-"..i,
+	desc = [[A study into Southspar's most unusual ruler.]],
+	rarity = false,
+	encumberance = 0,
+	cost = 2,
+}
+end
diff --git a/game/modules/tome/data/zones/town-last-hope/traps.lua b/game/modules/tome/data/zones/town-last-hope/traps.lua
index a0a22442f2f825082920bbe8254c2749f7575f9f..12a450d1973d1d0e5da14b3090255c133ace1505 100644
--- a/game/modules/tome/data/zones/town-last-hope/traps.lua
+++ b/game/modules/tome/data/zones/town-last-hope/traps.lua
@@ -77,7 +77,13 @@ newEntity{ base = "BASE_STORE", define_as = "HERBALIST",
 newEntity{ base = "BASE_STORE", define_as = "RUNES",
 	name="Sook's Runes and other Harmless Contraptions",
 	display='5', color=colors.LIGHT_RED,
-	resolvers.store("LAST_HOPE_LIBRARY", "allied-kingdoms", "store/shop_door.png", "store/shop_sign_sooks_runes.png"),
+	resolvers.store("SCROLL", "allied-kingdoms", "store/shop_door.png", "store/shop_sign_sooks_runes.png"),
+}
+
+newEntity{ base = "BASE_STORE", define_as = "LIBRARY",
+	name="Library",
+	display='5', color=colors.LIGHT_RED,
+	resolvers.store("LAST_HOPE_LIBRARY", "allied-kingdoms", "store/shop_door.png", "store/shop_sign_library.png"),
 }
 
 newEntity{ base = "BASE_STORE", define_as = "ELDER",
diff --git a/tiled-maps/last-hope.tmx b/tiled-maps/last-hope.tmx
index 227e3f4f5247a8de18f6982ff7d2f936b46bea9a..d113bf741bacd1e2db70d876521aca2287904cd2 100644
--- a/tiled-maps/last-hope.tmx
+++ b/tiled-maps/last-hope.tmx
@@ -106,6 +106,11 @@
     <property name="display" value="A"/>
    </properties>
   </tile>
+  <tile id="10">
+   <properties>
+    <property name="display" value="B"/>
+   </properties>
+  </tile>
   <tile id="31">
    <properties>
     <property name="display" value="F"/>
@@ -182,7 +187,7 @@
  </tileset>
  <layer name="Terrain" width="50" height="50">
   <data encoding="base64" compression="zlib">
-   eJzdmNdtxDAQRHW/bkJlXA3+vQrcpHOowgmqxhYgAovBpmGQDH8sBFIncR5nuaTuPE3TeXDcnMaPMSKuRVz9xrxdZf/RGiPdGBYHxl/Vz3IcwRNpWSBmpe9oHka7FVmmo/SfRMzQtvr35GH0o178ncUX8Yxk0PTUciBPTxbWg6KzhMUh77Pe9GKIPPDyP/pt1ptaDotB9qEurEkaTy1Lixee95j3pf9R3H92WLR5wbFYTzL5VPreFI61/RRo0vi9tVeTX1kGa7+I1hDOfXnus4KlJZ/WuHU4sCZZoT2X8SXjCVuftPpTQr5La1v11xs344nnBbNvaHMhz1QaT3auMp54XmTOILPy/LK9e96u2v7GskSeeOtibX8ZHBaDfPcM7R4sNRzWnBQOi0Fb3x5LtD4iDmZ9a2clZJC6L3CVPJJFO5OxuZX1QtvD5HPSh4sIrS19sTyJtLRyyLVheSE1W32aJ5n6y3IsRmgcmhf4DYv30JPMObMXB9aqDMd3BUc0Psvx0ugHBuvH/XZ9aOD4L+ujV73C2Kte9d4/NG9G7B/sfn7neHLkfs5yYM2KzlcYGsOo81UPFuSR/Xucd1lPNBbk0cYf8f3R6olkQR4M61swqrmRF6wnEaO2vr1vWev9OEbGi9b/S+T9bH54+q1xMwyWJx5LDWeUNx8Jhogjm18ZPfK+x57xiWVg1ryn51XRXlM72HyqyS9GR8uztV5ELIym1mdaGSwW1huWw9LfwpBhyZzp3pO/G8ngsdTmGqO/JwPLw8z93vozLN75MKt9LwaGpyb21D+C50j9LVy9x/wBML23jw==
+   eJzdmNltwzAQRO3fNKEyXEN+XUGazO0kTeSCqkkEiMBisNfwkIJ8LASSpjiPszzk0+FwOA2Om+P4MUbEtYir35jWp6zfW2OkG8PiwPir+lmOPXgiLTPEpNTtzcNotyLLtJf+o4gJylb9ljyMftSLv7P4Ip6RDJqeWg7k6cnCelB0lrA4ZDvrTS+GyAMv/6PfZr2p5bAYZB3qwj1J46llafHC8x7zvtQ/ivZnh0WbFxyL9SSTT6XuVeFYyk+BJo3fW3s1+ZVlsM6LaA3h3Jd+nxUsLfm0xK3DgXuSFVq/jC8ZT9j9Sdt/Ssh3aWVr//XGzXjiecGcG9pcyDuVxpOdq4wnnheZO8ik9J/Xd0/rUzvfWJbIE29dLOUvg8NikO+eoNyDpYbDmpPCYTFo69tjidZHxMGsb+2uhAxS9xmekkeyaHcyNreyXmhnmOwnfTiL0MrSF8uTSEsrh1wblhdSs1WneZLZf1mO2QiNQ/MCv2GxDT3J3DN7ceBeleH4ruCIxmc5Lo1+YLB+3K/PhwaO/7I+eu1XGFvtV73PD82bEecHe57fOZ7seZ6zHLhnRfcrDI1h1P2qBwvyyPot7rusJxoL8mjjj/j+aPVEsiAPhvUtGO25kResJxGjtr69b1nr/ThGxovW/0tkezY/PP3WuBkGyxOPpYYzypuPBEPEkc2vjB7Z7rFnfGIZmDXv6XlRtL8FfTz/ahiy+cXoaOlb60XEwmhq7dPKYLGw3rAclv4WhgxL5k73nvzdSAaPpTbXGP09GVgeZu631p9h8e6HWe1bMTA8NbGl/hE8e+pv4eo95g9UCrd0
   </data>
  </layer>
  <objectgroup name="Trap" width="50" height="50">