diff --git a/game/engines/default/engine/ui/ActorFrame.lua b/game/engines/default/engine/ui/ActorFrame.lua
index 1df4bdc95f80c7a799a5da26e50bcdaafda36989..dfc0bfc04e3e45ee1dfed034400f6689422a3a69 100644
--- a/game/engines/default/engine/ui/ActorFrame.lua
+++ b/game/engines/default/engine/ui/ActorFrame.lua
@@ -27,7 +27,7 @@ function _M:init(t)
 	self.actor = assert(t.actor, "no actorframe actor")
 	self.w = assert(t.w, "no actorframe w")
 	self.h = assert(t.h, "no actorframe h")
-	self.tiles = t.tiles or Tiles.new(w, h, nil, nil, true, nil)
+	self.tiles = t.tiles or Tiles.new(self.w, self.h, nil, nil, true, nil)
 
 	Base.init(self, t)
 end
diff --git a/game/modules/tome/class/interface/PlayerLore.lua b/game/modules/tome/class/interface/PlayerLore.lua
index 6ce1101a1166b66b28edfa5296236292f36f8fc8..5026f6652119fef4a9f9720210e88166391d9838 100644
--- a/game/modules/tome/class/interface/PlayerLore.lua
+++ b/game/modules/tome/class/interface/PlayerLore.lua
@@ -90,4 +90,9 @@ function _M:learnLore(lore, nopopup, silent)
 	if learnt and not self.additional_lore[lore] and self.registerLoreFound then self:registerLoreFound(lore) end
 	print("[LORE] learnt", lore)
 	if learnt then if l.on_learn then l.on_learn(self) end end
+
+	if self.runStop then
+		self:runStop("learnt lore")
+		self:restStop("learnt lore")
+	end
 end
diff --git a/game/modules/tome/data/talents/spells/spells.lua b/game/modules/tome/data/talents/spells/spells.lua
index 18bd64fa6d82e04aabd2e2d2e3f50dc2367f117e..d9cde8fba888188ee901867884770229394bc3d0 100644
--- a/game/modules/tome/data/talents/spells/spells.lua
+++ b/game/modules/tome/data/talents/spells/spells.lua
@@ -123,6 +123,7 @@ function necroSetupSummon(self, m, x, y, level, no_control)
 	m.summoner = self
 	m.summoner_gain_exp = true
 	m.necrotic_minion = true
+	m.exp_worth = 0
 	m.life_regen = 0
 	m.unused_stats = 0
 	m.unused_talents = 0
diff --git a/game/modules/tome/data/timed_effects/magical.lua b/game/modules/tome/data/timed_effects/magical.lua
index 61fe7f805b4bcf7afddd20ed1887399e2c582558..84f4ad6c3978ede4120ef39fac8d09e363ff28a1 100644
--- a/game/modules/tome/data/timed_effects/magical.lua
+++ b/game/modules/tome/data/timed_effects/magical.lua
@@ -727,7 +727,7 @@ newEffect{
 	deactivate = function(self, eff)
 		if (eff.allow_override or (self:canBe("worldport") and not self:attr("never_move"))) and eff.dur <= 0 then
 			game:onTickEnd(function()
-				if eff.leveid == game.zone.short_name.."-"..game.level.level then
+				if eff.leveid == game.zone.short_name.."-"..game.level.level and game.player.can_change_zone then
 					game.logPlayer(self, "You are yanked out of this place!")
 					game:changeLevel(1, eff.where or game.player.last_wilderness)
 				end
@@ -764,7 +764,7 @@ newEffect{
 
 		if self:canBe("worldport") and not self:attr("never_move") then
 			game:onTickEnd(function()
-				if eff.leveid == game.zone.short_name.."-"..game.level.level then
+				if eff.leveid == game.zone.short_name.."-"..game.level.level and game.player.can_change_zone then
 					game.logPlayer(self, "You are yanked out of this place!")
 					game:changeLevel(1, "town-angolwen")
 				end
@@ -1391,7 +1391,7 @@ newEffect{
 		old_eff.physid = self:addTemporaryValue("combat_physresist", old_eff.cur_physical)
 		old_eff.spellid = self:addTemporaryValue("combat_spellresist", old_eff.cur_spell)
 		old_eff.mentalid = self:addTemporaryValue("combat_mentalresist", old_eff.cur_mental)
-		
+
 		old_eff.dur = new_eff.dur
 		return old_eff
 	end,