From 2f32f041d8552e6a7194e80842531522c338cd0d Mon Sep 17 00:00:00 2001
From: dg <dg@51575b47-30f0-44d4-a5cc-537603b46e54>
Date: Thu, 21 Apr 2011 19:22:10 +0000
Subject: [PATCH] NPCs now do not regen when coming back to a level Objects now
 do not regen when coming back to a level

git-svn-id: http://svn.net-core.org/repos/t-engine4@3248 51575b47-30f0-44d4-a5cc-537603b46e54
---
 game/modules/tome/class/Game.lua      | 18 +++++++++---------
 game/modules/tome/class/GameState.lua | 13 ++++++++-----
 2 files changed, 17 insertions(+), 14 deletions(-)

diff --git a/game/modules/tome/class/Game.lua b/game/modules/tome/class/Game.lua
index 949dc1f689..b5072383bd 100644
--- a/game/modules/tome/class/Game.lua
+++ b/game/modules/tome/class/Game.lua
@@ -520,19 +520,19 @@ function _M:changeLevel(lev, zone, keep_old_lev, force_down)
 	if self.level.last_turn and self.level.data.decay and self.level.last_turn + self.level.data.decay[1] * 10 < self.turn then
 		local only = self.level.data.decay.only or nil
 		if not only or only.actor then
-			local nb_actor, remain_actor = self.level:decay(Map.ACTOR, function(e) return not e.unique and not e.lore and not e.quest and self.level.last_turn + rng.range(self.level.data.decay[1], self.level.data.decay[2]) < self.turn * 10 end)
-			if not self.level.data.decay.no_respawn then
-				local gen = self.zone:getGenerator("actor", self.level)
-				if gen.regenFrom then gen:regenFrom(remain_actor) end
-			end
+--			local nb_actor, remain_actor = self.level:decay(Map.ACTOR, function(e) return not e.unique and not e.lore and not e.quest and self.level.last_turn + rng.range(self.level.data.decay[1], self.level.data.decay[2]) < self.turn * 10 end)
+--			if not self.level.data.decay.no_respawn then
+--				local gen = self.zone:getGenerator("actor", self.level)
+--				if gen.regenFrom then gen:regenFrom(remain_actor) end
+--			end
 		end
 
 		if not only or only.object then
 			local nb_object, remain_object = self.level:decay(Map.OBJECT, function(e) return not e.unique and not e.lore and not e.quest and self.level.last_turn + rng.range(self.level.data.decay[1], self.level.data.decay[2]) < self.turn * 10 end)
-			if not self.level.data.decay.no_respawn then
-				local gen = self.zone:getGenerator("object", self.level)
-				if gen.regenFrom then gen:regenFrom(remain_object) end
-			end
+--			if not self.level.data.decay.no_respawn then
+--				local gen = self.zone:getGenerator("object", self.level)
+--				if gen.regenFrom then gen:regenFrom(remain_object) end
+--			end
 		end
 	end
 
diff --git a/game/modules/tome/class/GameState.lua b/game/modules/tome/class/GameState.lua
index 94b819edfe..75281a99b2 100644
--- a/game/modules/tome/class/GameState.lua
+++ b/game/modules/tome/class/GameState.lua
@@ -1080,7 +1080,9 @@ local random_zone_themes = {
 	} end },
 }
 
-function _M:createRandomZone()
+function _M:createRandomZone(zbase)
+	zbase = zbase or {}
+
 	------------------------------------------------------------
 	-- Select theme
 	------------------------------------------------------------
@@ -1098,9 +1100,9 @@ function _M:createRandomZone()
 	------------------------------------------------------------
 	-- Misc data
 	------------------------------------------------------------
-	data.depth = rng.range(2, 4)
-	data.min_lev, data.max_lev = game.player.level, game.player.level + 15
-	data.w, data.h = rng.range(40, 60), rng.range(40, 60)
+	data.depth = zbase.depth or rng.range(2, 4)
+	data.min_lev, data.max_lev = zbase.min_lev or game.player.level, zbase.max_lev or game.player.level + 15
+	data.w, data.h = zbase.w or rng.range(40, 60), zbase.h or rng.range(40, 60)
 	data.max_material_level = util.bound(math.ceil(data.min_lev / 10), 1, 5)
 	data.min_material_level = data.max_material_level - 1
 
@@ -1198,7 +1200,6 @@ function _M:createRandomZone()
 end
 
 function _M:createRandomBoss(base, level)
-	local boss_id = "RND_ZONE_BOSS"
 	local b = base:clone()
 
 	------------------------------------------------------------
@@ -1207,6 +1208,8 @@ function _M:createRandomBoss(base, level)
 	local ngd = NameGenerator.new(randart_name_rules.default)
 	local name = ngd:generate()
 	b.name = name.." the "..b.name
+	b.unique = b.name
+	local boss_id = "RND_BOSS_"..b.name:upper():gsub("[^A-Z]", "_")
 	b.color = colors.VIOLET
 	b.rank = rng.percent(30) and 4 or 3.5
 	b.level_range[1] = level
-- 
GitLab