From a6f37f9b7734fe3122cc221c22efaf8498443ccc Mon Sep 17 00:00:00 2001
From: dg <dg@51575b47-30f0-44d4-a5cc-537603b46e54>
Date: Wed, 4 Jul 2012 18:23:28 +0000
Subject: [PATCH] Fearscape restores coords even to dead actors

git-svn-id: http://svn.net-core.org/repos/t-engine4@5331 51575b47-30f0-44d4-a5cc-537603b46e54
---
 game/modules/tome/class/GameState.lua            |  2 +-
 .../data/talents/corruptions/shadowflame.lua     | 16 +++++++++++-----
 2 files changed, 12 insertions(+), 6 deletions(-)

diff --git a/game/modules/tome/class/GameState.lua b/game/modules/tome/class/GameState.lua
index 1c03530751..3353c9e2f9 100644
--- a/game/modules/tome/class/GameState.lua
+++ b/game/modules/tome/class/GameState.lua
@@ -1819,7 +1819,7 @@ function _M:startEvents()
 		-- Generate the events list for this zone, eventually loading from group files
 		local evts = {}
 		for i, e in ipairs(game.zone.events) do
-			if e.name then evts[#evts+1] = e.name
+			if e.name then evts[#evts+1] = e
 			elseif e.group then
 				local f, err = loadfile("/data/general/events/groups/"..e.group..".lua")
 				if not f then error(err) end
diff --git a/game/modules/tome/data/talents/corruptions/shadowflame.lua b/game/modules/tome/data/talents/corruptions/shadowflame.lua
index c4d8094d73..d08f96550a 100644
--- a/game/modules/tome/data/talents/corruptions/shadowflame.lua
+++ b/game/modules/tome/data/talents/corruptions/shadowflame.lua
@@ -254,13 +254,17 @@ newTalent{
 			game.zone_name_s = nil
 
 			local x1, y1 = util.findFreeGrid(p.x, p.y, 20, true, {[Map.ACTOR]=true})
-			if x1 and not self.dead then
-				self:move(x1, y1, true)
-				self.on_die, self.demon_plane_on_die = self.demon_plane_on_die, nil
-				game.level.map:particleEmitter(x1, y1, 1, "demon_teleport")
+			if x1 then
+				if not self.dead then
+					self:move(x1, y1, true)
+					self.on_die, self.demon_plane_on_die = self.demon_plane_on_die, nil
+					game.level.map:particleEmitter(x1, y1, 1, "demon_teleport")
+				else
+					self.x, self.y = x1, y1
+				end
 			end
+			local x2, y2 = util.findFreeGrid(p.x, p.y, 20, true, {[Map.ACTOR]=true})
 			if not p.target.dead then
-				local x2, y2 = util.findFreeGrid(p.x, p.y, 20, true, {[Map.ACTOR]=true})
 				if x2 then
 					p.target:move(x2, y2, true)
 					p.target.on_die, p.target.demon_plane_on_die = p.target.demon_plane_on_die, nil
@@ -268,6 +272,8 @@ newTalent{
 				end
 				if oldlevel:hasEntity(p.target) then oldlevel:removeEntity(p.target) end
 				level:addEntity(p.target)
+			else
+				p.target.x, p.target.y = x2, y2
 			end
 
 			-- Add objects back
-- 
GitLab