From 979875dafd8f8326801f873d2fb8c6a08acc6f43 Mon Sep 17 00:00:00 2001
From: dg <dg@51575b47-30f0-44d4-a5cc-537603b46e54>
Date: Thu, 19 Aug 2010 16:15:23 +0000
Subject: [PATCH] New zone: the Slime Tunnels Updated quests, the awy into the
 High Peak is now open !

git-svn-id: http://svn.net-core.org/repos/t-engine4@1030 51575b47-30f0-44d4-a5cc-537603b46e54
---
 game/modules/tome/class/Actor.lua             |  16 ++++
 game/modules/tome/class/Game.lua              |   5 +
 game/modules/tome/class/Player.lua            |  14 +++
 .../tome/class/generator/map/SlimeTunnels.lua |  86 ++++++++++++++++++
 .../tome/data/chats/message-minas-tirith.lua  |  10 +-
 .../modules/tome/data/general/grids/slime.lua |  36 ++++++++
 game/modules/tome/data/general/npcs/ooze.lua  |  71 ++++++++++++++-
 .../data/general/objects/quest-artifacts.lua  |  20 ++++
 .../tome/data/gfx/terrain/slime_floor.png     | Bin 0 -> 1198 bytes
 .../tome/data/gfx/terrain/slime_wall.png      | Bin 0 -> 1372 bytes
 .../tome/data/maps/zones/slime-tunnels.lua    |  69 ++++++++++++++
 game/modules/tome/data/quests/orb-command.lua |  22 ++++-
 .../data/talents/techniques/superiority.lua   |   4 +-
 .../data/texts/unlock-mage_cryomancer.lua     |   2 +-
 .../tome/data/zones/slime-tunnels/grids.lua   |  63 +++++++++++++
 .../tome/data/zones/slime-tunnels/npcs.lua    |  23 +++++
 .../tome/data/zones/slime-tunnels/objects.lua |  37 ++++++++
 .../tome/data/zones/slime-tunnels/traps.lua   |  20 ++++
 .../tome/data/zones/slime-tunnels/zone.lua    |  55 +++++++++++
 ideas/zones.ods                               | Bin 18354 -> 18468 bytes
 20 files changed, 542 insertions(+), 11 deletions(-)
 create mode 100644 game/modules/tome/class/generator/map/SlimeTunnels.lua
 create mode 100644 game/modules/tome/data/general/grids/slime.lua
 create mode 100644 game/modules/tome/data/gfx/terrain/slime_floor.png
 create mode 100644 game/modules/tome/data/gfx/terrain/slime_wall.png
 create mode 100644 game/modules/tome/data/maps/zones/slime-tunnels.lua
 create mode 100644 game/modules/tome/data/zones/slime-tunnels/grids.lua
 create mode 100644 game/modules/tome/data/zones/slime-tunnels/npcs.lua
 create mode 100644 game/modules/tome/data/zones/slime-tunnels/objects.lua
 create mode 100644 game/modules/tome/data/zones/slime-tunnels/traps.lua
 create mode 100644 game/modules/tome/data/zones/slime-tunnels/zone.lua

diff --git a/game/modules/tome/class/Actor.lua b/game/modules/tome/class/Actor.lua
index 4c1a9b99f7..a2a2a174b9 100644
--- a/game/modules/tome/class/Actor.lua
+++ b/game/modules/tome/class/Actor.lua
@@ -573,6 +573,22 @@ function _M:onTakeHit(value, src)
 		game.logSeen(self, "%s shatters into pieces!", self.name:capitalize())
 	end
 
+	-- Split ?
+	if self.clone_on_hit and value >= self.clone_on_hit.min_dam_pct * self.max_life / 100 and rng.percent(self.clone_on_hit.chance) then
+		-- Find space
+		local x, y = util.findFreeGrid(self.x, self.y, 1, true, {[Map.ACTOR]=true})
+		if x then
+			-- Find a place around to clone
+			local a = self:clone()
+			a.energy.val = 0
+			a.exp_worth = 0.1
+			a.inven = {}
+			a.x, a.y = nil, nil
+			game.zone:addEntity(game.level, a, "actor", x, y)
+			game.logSeen(self, "%s is split in two!", self.name:capitalize())
+		end
+	end
+
 	return value
 end
 
diff --git a/game/modules/tome/class/Game.lua b/game/modules/tome/class/Game.lua
index 1313097630..ed7ee572ef 100644
--- a/game/modules/tome/class/Game.lua
+++ b/game/modules/tome/class/Game.lua
@@ -501,6 +501,11 @@ function _M:setupCommands()
 				self.logPlayer(self.player, "All world artifacts created.")
 			end
 		end,
+		[{"_g","ctrl"}] = function()
+			if config.settings.tome.cheat then
+				self:changeLevel(1, "slime-tunnels")
+			end
+		end,
 	}
 	self.key:addBinds
 	{
diff --git a/game/modules/tome/class/Player.lua b/game/modules/tome/class/Player.lua
index 62afc1482c..791f498a43 100644
--- a/game/modules/tome/class/Player.lua
+++ b/game/modules/tome/class/Player.lua
@@ -555,6 +555,20 @@ function _M:useOrbPortal(portal)
 	if portal.on_use then portal:on_use(self) end
 end
 
+--- Use the orbs of command
+function _M:useCommandOrb(o)
+	local g = game.level.map(self.x, self.y, Map.TERRAIN)
+	if not g then return end
+	if not g.define_as or not o.define_as or o.define_as ~= g.define_as then
+		game.logPlayer(self, "This does not seem to have any effect.")
+		return
+	end
+
+	game.logPlayer(self, "You use the %s on the pedestral. There is a distant 'clonk' sound.", o:getName{do_colour=true})
+	self:grantQuest("orb-command")
+	self:setQuestStatus("orb-command", engine.Quest.COMPLETED, o.define_as)
+end
+
 --- Tell us when we are targetted
 function _M:on_targeted(act)
 	if self:attr("invisible") or self:attr("stealth") then
diff --git a/game/modules/tome/class/generator/map/SlimeTunnels.lua b/game/modules/tome/class/generator/map/SlimeTunnels.lua
new file mode 100644
index 0000000000..1b41ec43af
--- /dev/null
+++ b/game/modules/tome/class/generator/map/SlimeTunnels.lua
@@ -0,0 +1,86 @@
+-- TE4 - T-Engine 4
+-- Copyright (C) 2009, 2010 Nicolas Casalini
+--
+-- This program is free software: you can redistribute it and/or modify
+-- it under the terms of the GNU General Public License as published by
+-- the Free Software Foundation, either version 3 of the License, or
+-- (at your option) any later version.
+--
+-- This program is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+-- GNU General Public License for more details.
+--
+-- You should have received a copy of the GNU General Public License
+-- along with this program.  If not, see <http://www.gnu.org/licenses/>.
+--
+-- Nicolas Casalini "DarkGod"
+-- darkgod@te4.org
+
+require "engine.class"
+local Map = require "engine.Map"
+require "engine.Generator"
+module(..., package.seeall, class.inherit(engine.Generator))
+
+function _M:init(zone, map, level, data)
+	engine.Generator.init(self, zone, map, level)
+	self.data = data
+	self.grid_list = zone.grid_list
+end
+
+function _M:makePath(sx, sy, ex, ey, wd, excentricity, points)
+	local ln = 0
+	local path = core.noise.new(1)
+
+	local j = sy
+	local dir = true
+	for i = sx, ex do
+		for jj = j - wd, j + wd do if self.map:isBound(i, jj) then self.map(i, jj, Map.TERRAIN, self:resolve(".")) end end
+		points[#points+1] = {x=i, y=j}
+
+		if i < ex - 10 then
+			local n = path:fbm_perlin(150 * i / self.map.w, 4)
+			if ln < -excentricity or ln > excentricity then
+				if (ln > 0 and n < 0) or (ln < 0 and n > 0) then dir = not dir end
+				j = util.bound(j + (dir and -1 or 1), 0, self.map.h - 1)
+			end
+			ln = n
+		else
+			-- Close in on the exit
+			if j < ey then j = j + 1
+			elseif j > ey then j = j - 1
+			end
+		end
+	end
+end
+
+function _M:generate(lev, old_lev)
+	for i = 0, self.map.w - 1 do for j = 0, self.map.h - 1 do
+		self.map(i, j, Map.TERRAIN, self:resolve("#"))
+	end end
+
+	local points = {}
+	self:makePath(0, self.data.start, self.map.w - 1, self.data.stop, 1, 0.35, points)
+	for i = 1, 10 do
+		local sp, ep
+		repeat
+			sp = rng.table(points)
+			ep = rng.table(points)
+		until ep.x - sp.x > 80
+		self:makePath(sp.x, sp.y, ep.x, ep.y, 0, 0.25, points)
+	end
+
+	-- Place pedestrals
+	local orbs = {"ORB_UNDEATH", "ORB_DRAGON", "ORB_ELEMENTS", "ORB_DESTRUCTION"}
+	for i = 1, 4 do
+		local orb = rng.tableRemove(orbs)
+		local p = rng.tableRemove(points)
+		self.map(p.x, p.y, Map.TERRAIN, self:resolve(orb, nil, true))
+	end
+
+	self.level.slime_points = points
+
+	-- Make stairs
+	local spots = {}
+	return 1,1,1,1, spots
+end
diff --git a/game/modules/tome/data/chats/message-minas-tirith.lua b/game/modules/tome/data/chats/message-minas-tirith.lua
index 113eb79e90..edd30bd353 100644
--- a/game/modules/tome/data/chats/message-minas-tirith.lua
+++ b/game/modules/tome/data/chats/message-minas-tirith.lua
@@ -25,10 +25,12 @@ But enough talk, take this message, now I must go.
 	answers = {
 		{"Thank you for your courrage.", action=function(npc, player)
 			local o, item, inven_id = npc:findInAllInventories("Sealed Scroll of Minas Tirith")
-			npc:removeObject(inven_id, item, true)
-			player:addObject(player.INVEN_INVEN, o)
-			player:sortInven()
-			game.logPlayer(player, "The herald gives you %s.", o:getName{do_color=true})
+			if o then
+				npc:removeObject(inven_id, item, true)
+				player:addObject(player.INVEN_INVEN, o)
+				player:sortInven()
+				game.logPlayer(player, "The herald gives you %s.", o:getName{do_color=true})
+			end
 
 			if game.level:hasEntity(npc) then game.level:removeEntity(npc) end
 		end},
diff --git a/game/modules/tome/data/general/grids/slime.lua b/game/modules/tome/data/general/grids/slime.lua
new file mode 100644
index 0000000000..671cd21e59
--- /dev/null
+++ b/game/modules/tome/data/general/grids/slime.lua
@@ -0,0 +1,36 @@
+-- ToME - Tales of Middle-Earth
+-- Copyright (C) 2009, 2010 Nicolas Casalini
+--
+-- This program is free software: you can redistribute it and/or modify
+-- it under the terms of the GNU General Public License as published by
+-- the Free Software Foundation, either version 3 of the License, or
+-- (at your option) any later version.
+--
+-- This program is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+-- GNU General Public License for more details.
+--
+-- You should have received a copy of the GNU General Public License
+-- along with this program.  If not, see <http://www.gnu.org/licenses/>.
+--
+-- Nicolas Casalini "DarkGod"
+-- darkgod@te4.org
+
+newEntity{
+	define_as = "SLIME_FLOOR",
+	name = "slimy floor", image = "terrain/slime_floor.png",
+	display = '.', color=colors.LIGHT_GREEN, back_color=colors.GREEN,
+}
+
+newEntity{
+	define_as = "SLIME_WALL",
+	name = "slimy wall", image = "terrain/slime_wall.png",
+	display = '#', color=colors.LIGHT_GREEN, back_color=colors.GREEN,
+	always_remember = true,
+	does_block_move = true,
+	can_pass = {pass_wall=1},
+	block_sight = true,
+	air_level = -20,
+	dig = "FLOOR",
+}
diff --git a/game/modules/tome/data/general/npcs/ooze.lua b/game/modules/tome/data/general/npcs/ooze.lua
index a0af025998..47b95b7849 100644
--- a/game/modules/tome/data/general/npcs/ooze.lua
+++ b/game/modules/tome/data/general/npcs/ooze.lua
@@ -36,10 +36,12 @@ newEntity{
 	size_category = 3,
 	infravision = 20,
 
+	clone_on_hit = {min_dam_pct=15, chance=30},
+
 	resolvers.drops{chance=90, nb=1, {} },
 	resolvers.drops{chance=60, nb=1, {type="money"} },
 
-	resists = { [DamageType.LIGHT] = -50 },
+	resists = { [DamageType.LIGHT] = -50, [DamageType.COLD] = -50 },
 	fear_immune = 1,
 }
 
@@ -104,6 +106,69 @@ Through its transparent jelly structure you can see treasures it has engulfed, a
 	level_range = {12, nil}, exp_worth = 1,
 	rarity = 3,
 	max_life = resolvers.rngavg(50,100),
-	combat = { dam=7, atk=15, apr=6, damtype=DamageType.ACID },
+	combat = { dam=resolvers.mbonus(80, 15), atk=15, apr=6, damtype=DamageType.ACID },
 	drops = resolvers.drops{chance=90, nb=3, {} },
-}
\ No newline at end of file
+}
+
+newEntity{ base = "BASE_NPC_OOZE",
+	name = "crimson ooze", color=colors.CRIMSON,
+	desc = "It's reddish and it's oozing.",
+	level_range = {25, nil}, exp_worth = 1,
+	rarity = 1,
+	rank = 2,
+	max_life = resolvers.rngavg(80,90), life_rating = 11,
+	combat = { dam=resolvers.mbonus(110, 15), atk=15, apr=5, damtype=DamageType.FIREBURN },
+	clone_on_hit = {min_dam_pct=15, chance=50},
+}
+
+newEntity{ base = "BASE_NPC_OOZE",
+	name = "brittle clear ooze", color=colors.WHITE,
+	desc = "It's translucent and it's oozing.",
+	level_range = {25, nil}, exp_worth = 1,
+	rarity = 1,
+	rank = 2,
+	max_life = resolvers.rngavg(80,90), life_rating = 8,
+	combat = { dam=resolvers.mbonus(40, 15), atk=15, apr=5, },
+	clone_on_hit = {min_dam_pct=1, chance=50},
+}
+
+newEntity{ base = "BASE_NPC_OOZE",
+	name = "slimy ooze", color=colors.GREEN,
+	desc = "It's very slimy and it's oozing.",
+	level_range = {25, nil}, exp_worth = 1,
+	rarity = 1,
+	rank = 2,
+	max_life = resolvers.rngavg(80,90), life_rating = 11,
+	combat = { dam=resolvers.mbonus(110, 15), atk=15, apr=5, damtype=DamageType.SLIME },
+	clone_on_hit = {min_dam_pct=15, chance=50},
+
+	resolvers.talents{ [Talents.T_SLIME_SPIT]=5 },
+}
+
+newEntity{ base = "BASE_NPC_OOZE",
+	name = "poison ooze", color=colors.LIGHT_GREEN,
+	desc = "It's very slimy and it's oozing.",
+	level_range = {25, nil}, exp_worth = 1,
+	rarity = 1,
+	rank = 2,
+	max_life = resolvers.rngavg(80,90), life_rating = 11,
+	combat = { dam=resolvers.mbonus(110, 15), atk=15, apr=5, damtype=DamageType.POISON },
+	clone_on_hit = {min_dam_pct=15, chance=50},
+
+	resolvers.talents{ [Talents.T_POISONOUS_SPORES]=5 },
+}
+
+--[[
+newEntity{ base = "BASE_NPC_OOZE",
+	name = "morphic ooze", color=colors.GREY,
+	desc = "Its shape change every few seconds.",
+	level_range = {25, nil}, exp_worth = 1,
+	rarity = 1,
+	rank = 3,
+	max_life = resolvers.rngavg(140,170), life_rating = 11,
+	combat = { dam=resolvers.mbonus(110, 15), atk=15, apr=5, damtype=DamageType.ACID },
+	clone_on_hit = {min_dam_pct=40, chance=100},
+
+	resolvers.talents{ [Talents.T_OOZE_MERGE]=5 },
+}
+]]
diff --git a/game/modules/tome/data/general/objects/quest-artifacts.lua b/game/modules/tome/data/general/objects/quest-artifacts.lua
index 2678e45658..4a0c5c3550 100644
--- a/game/modules/tome/data/general/objects/quest-artifacts.lua
+++ b/game/modules/tome/data/general/objects/quest-artifacts.lua
@@ -117,6 +117,11 @@ newEntity{ define_as = "ORB_UNDEATH",
 		end
 	end,
 
+	max_power = 1, power_regen = 1,
+	use_power = { name = "use the orb", power = 1,
+		use = function(self, who) who:useCommandOrb(self) end
+	},
+
 	carrier = {
 		inc_stats = { [Stats.STAT_DEX] = 6, },
 	},
@@ -140,6 +145,11 @@ newEntity{ define_as = "ORB_DRAGON",
 		end
 	end,
 
+	max_power = 1, power_regen = 1,
+	use_power = { name = "use the orb", power = 1,
+		use = function(self, who) who:useCommandOrb(self) end
+	},
+
 	carrier = {
 		inc_stats = { [Stats.STAT_CUN] = 6, },
 	},
@@ -163,6 +173,11 @@ newEntity{ define_as = "ORB_ELEMENTS",
 		end
 	end,
 
+	max_power = 1, power_regen = 1,
+	use_power = { name = "use the orb", power = 1,
+		use = function(self, who) who:useCommandOrb(self) end
+	},
+
 	carrier = {
 		inc_stats = { [Stats.STAT_MAG] = 6, },
 	},
@@ -186,6 +201,11 @@ newEntity{ define_as = "ORB_DESTRUCTION",
 		end
 	end,
 
+	max_power = 1, power_regen = 1,
+	use_power = { name = "use the orb", power = 1,
+		use = function(self, who) who:useCommandOrb(self) end
+	},
+
 	carrier = {
 		inc_stats = { [Stats.STAT_STR] = 6, },
 	},
diff --git a/game/modules/tome/data/gfx/terrain/slime_floor.png b/game/modules/tome/data/gfx/terrain/slime_floor.png
new file mode 100644
index 0000000000000000000000000000000000000000..5889332a260f6f0b1cc6e9f20a3319b8fd53b20e
GIT binary patch
literal 1198
zcmV;f1X25mP)<h;3K|Lk000e1NJLTq001BW001Be0ssI2{21+{00001b5ch_0Itp)
z=>Px#32;bRa{vGf6951U69E94oEQKA00(qQO+^RV2onu6EW^gU*#H0pKuJVFR7l5N
zmQAiJyA6cDqT~y_dFI(i_P?m)xK)(_sXloD45JOJC9+sQ(m((8kF}*Gm1+s){P_8g
z6RJd!lk;PrtUt9rLIC|ODT%*{nb#ek1b{e__WDRm0u{9sAjG`}qMV$s<J4A=gw$(@
zBB>S>wW_uP<;3w5Ct7Thm_Uh;7>5KB1IhE_^X<p<zKGlcDUeiXO`#DMoB)LF6M{sR
zk|aP>#7e*cRCkNwb_StWBZ#6TqW5s<t-`h=pae+-XsNdPV5C*jLZ$tuYHRj%rqPBJ
zY;=O~lk@fYIwxAS{Y`BoV&#McCk;hVp`uh0DowQzNt$N*Nqw9-Uw{97{0&L%hN#<A
zdbV+Ll9QyTC_;o!6ma)RoSugYN-9ZmGOypQ_N_#N?E6eWn24!(aKC>?NlH@92hokz
zDk%s_TO}=OYwbdVs05OqkU4fBstbu!3Q?_|(k)EXQhgND2ktoCok~(q8!8Dt_OV_T
z6-ZR(jFLnxX(8^wb^GtSob4wPagxlTMeA<(Aym>TEsegMXu5m>?e3epadK#;ZY^o6
zmVlAg3@|tlRn=B4sgxmD5b9SLHN5sPE+7yJ`}0?=Ppv-%jR_p$oF_I3uW7_np%Y1i
zMzC-B#!uo<s+#sT2+<n$`5RMlODHpKC5fLTsa4U4IhR;nR$93d5n`XOg|OxTGAwD@
z1W?@KBaR;@uq{d=iQ7)V=RS`e2G|!z{KB_rdO&5oXaF6Bn^eD^{)tF~t_#;`BhYS#
z0c4ymn3?3b^Cf6dO-QU=%?o-_p#>SIiem*-OS?Ym+!#_4pIOw+zMeC3TT*HLsoJs=
zC`Ie?u%~i*vZ`G>=a(reP^sJ3-A-+M-Q6UYwkU9SFpYMK^k%xH?GBSRliD4eQ%DOK
z@Dm><?TChgBj0yfqdHOH^pQJn@1pt3)I1*dh6<Y4yP0{NXRDSHWTuL|`p$0bRB9KB
ziG99KQd`-T#3#59PJ%K8#MGkNN>5r@6LWz=rTyk#zZ~P^^W!9O#lGS~_kg7Bi5J@|
z!X{{1&mAP&Pk`bc{%a4@(0S7FG>+eq4@gziE|v0{pvjr_A%vY1tzScoP*J;CuU|82
z@~q)P?V*X5B;^E?gHO&k=f^<VwX_ooS}F0kgf=t{eE%)guef@~eHr<McqI13Clm6o
zRSZoEL|6AZvuXfs68o{A1XNnPuS-gc|IV_C`gAqgO%g4t1k`%1pE&+|m2Gy<PbAi-
z7=6XIPkii?7I*DhANgeGgovPY3XTHXTzzs*a$2JT#*nvaYkefijt{+c2hOB#-|YTo
zG<RRXkI(nsU!0MU_|?}(T1w)_IT;n||B^WyQFU3}@zS&UX8L_oT+M}MrzBx~r#k-g
zKNz$X>{?ZyYW}sGzscA42_~B}cb>l2m10cXvN{u@TB=W}CZ>S@0(Bk?&@0?sXaE2J
M07*qoM6N<$f-JH!MF0Q*

literal 0
HcmV?d00001

diff --git a/game/modules/tome/data/gfx/terrain/slime_wall.png b/game/modules/tome/data/gfx/terrain/slime_wall.png
new file mode 100644
index 0000000000000000000000000000000000000000..c5a56aeb6ff4b51f2d71b641a96c377e94fda02b
GIT binary patch
literal 1372
zcmV-i1*7_jP)<h;3K|Lk000e1NJLTq001BW001Be0ssI2{21+{00001b5ch_0Itp)
z=>Px#32;bRa{vGf6951U69E94oEQKA00(qQO+^RV2onu6EwsUmPXGV}?ny*JR7l57
zR#~#-I1U3qI`egP$HZJ>&NTPGMAgf*2=s@P)$I?3!`4EPSjhkV|G&?_`uU&h`B&9L
z0M>i%?^)l@gkn8d53xZZ0FXGIte4l%S>N`JDqUZ7{pk7<1ux&<bN^iTPj^36Pt}9E
zsEbJyYFK6lEbRl-fB*!c9j?U5LorlPssE_{L-iDyDLVAXPM@utEJ7eaLj@Nps#urm
zBAXO|1fT=DB2RW4YSlyaP(K(lN}01*W<vlI*dfCJNdkaD00K-%G9W<gkK|_*7)oG)
zI`ct<*)Q#}7w0A$iNJWp%O1l>2qH*AiWHF8@QPPF$pDTWk3Ga<kXfGFd!P30Y3fZ1
zaX@%7%X>XZPqe5-6)El_&z<%1ygYYcA{m9U%ph~myu4nXw>w4#8yFBsWD+BjtT-{j
zrCO&>Bs}r$d3oN+0*LHOEC)<7x91hVJ+E}Ns-;quD1uNDIU<-$9LPolKp==66AXkT
zR8&hvhyV~EOb`=cKYm>OrTS7m!~y`1L2ksvhJ#%^Qo9U5L`u~m_<;~v*cpyfrF62?
zk3YM=R8Q$5g(MzO2AMFS7bvP(t-5xpgN?R=#J&4o4q(Qh62w5<{iFIJJ*Yw$7zAms
z$N~!rD6pxf`ooo?Iti;-57txrR}zsi)zn2qEddMwXG1Wy^Ldcq^K7u<{B)3=@ZZ=6
z@$dNnK=is@po4vW4x%$}|3*3u%GTM?lez5$A^>LrC6F+Zcx9Gn*~`Au_pk9H8{mm7
z#>SlQcp;Nra>QJR2VThlWU|9|ObBs&d%e8AJ>Qu-J>Sld4Iuv4)nmk9h)w0eBs-Z$
zOac-xFv)@gFmYyO-kG=Ooq46>WIpiq$sr}_NKL%AOMrbm36d09RDrcs>69$HNQNhN
zS}ipx*a^dsf{JW$^Twaq;|!65+CyxC+Dc9)22_-&qKYYWKgA{qjya0MVqH4xv6&IC
z%#Ex7P)Qf7&q6Stv;qc5nPtWT+}jKQ9QKM7bWpz&z9|}jCJ?At7dLf4<fFGRh;zR*
zbpcUBTm2Cx+XGG&;}FCr^Z$?{%mLOX`PlILj7UIGV4>%2)&?KEl7wR5<QPbROpXDp
z?GM~}*N0rYo|(;?`16uMzke+iw^hYJ041j9m~evZWeb^rtQKT&Uja$7GRp@DTj~d1
z@u2UYql+r>*db|z0gyrRPh1%wpb#d*Ov0nyUYU1%+rP6p@xUuRcQ(Y>I%>>420qT?
z`*4LMODw7=iQGj3LYNuCTY)xaLZksutX4gw+MabT?g?NIcr=!}wm9pw8X^EQb|hLn
zK@b2&0njQ|OApmkbxDPT3}bE}&>&43D%Ml=R6lfxwzWtoGZ!n0Ls4P?mPzy$?rPRW
zT_0$Nn9zW5xXRO+)g@h2ivqc)9`jHmrbHG`17$Q0nX)^XgY>Pcu|N1eN{!811V(sF
zW447Hn*1KN?X{P^n3b%U-VJD+Sz8W0Z+n3ZAeMP=)!ET+v>fg93P1@QCh_umyVtkL
z(>GT1vE|I|d3)aW`!q<IE!T<3IuzgRoBQJs0JYDKSJvCTewq9<RSAjMvvyFYLCbCd
zEYJWvXYv+7-}Zth@R9M|Db4b{-Sdhnb448@)N#ahlJjwktvx!TOdemGx93hKFhPi*
eKJDS{dFOA!K^vijjbpU{0000<MNUMnLSTYKbZs{P

literal 0
HcmV?d00001

diff --git a/game/modules/tome/data/maps/zones/slime-tunnels.lua b/game/modules/tome/data/maps/zones/slime-tunnels.lua
new file mode 100644
index 0000000000..e821004f91
--- /dev/null
+++ b/game/modules/tome/data/maps/zones/slime-tunnels.lua
@@ -0,0 +1,69 @@
+-- ToME - Tales of Middle-Earth
+-- Copyright (C) 2009, 2010 Nicolas Casalini
+--
+-- This program is free software: you can redistribute it and/or modify
+-- it under the terms of the GNU General Public License as published by
+-- the Free Software Foundation, either version 3 of the License, or
+-- (at your option) any later version.
+--
+-- This program is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+-- GNU General Public License for more details.
+--
+-- You should have received a copy of the GNU General Public License
+-- along with this program.  If not, see <http://www.gnu.org/licenses/>.
+--
+-- Nicolas Casalini "DarkGod"
+-- darkgod@te4.org
+
+defineTile('#', "SLIME_WALL")
+defineTile('.', "SLIME_FLOOR")
+defineTile('<', "UP_WILDERNESS_FAR_EAST")
+defineTile('+', "PEAK_DOOR")
+
+subGenerator{
+	x = 2, y = 0, w = 241, h = 30,
+	generator = "mod.class.generator.map.SlimeTunnels",
+	data = {
+		start = 15,
+		stop = 15,
+		['.'] = "SLIME_FLOOR",
+		['#'] = "SLIME_WALL",
+	},
+}
+
+startx = 0
+starty = 15
+
+return [[
+##########################################################################################################################################################################################################################################################
+##########################################################################################################################################################################################################################################################
+##########################################################################################################################################################################################################################################################
+##########################################################################################################################################################################################################################################################
+##########################################################################################################################################################################################################################################################
+##########################################################################################################################################################################################################################################################
+##########################################################################################################################################################################################################################################################
+##########################################################################################################################################################################################################################################################
+##########################################################################################################################################################################################################################################################
+##########################################################################################################################################################################################################################################################
+##########################################################################################################################################################################################################################################################
+####################################################################################################################################################################################################################################################.....+
+###################################################################################################################################################################################################################################################......+
+##.################################################################################################################################################################################################################################################......+
+...################################################################################################################################################################################################################################################......+
+<..################################################################################################################################################################################################################################################......+
+...################################################################################################################################################################################################################################################......+
+##.################################################################################################################################################################################################################################################......+
+####################################################################################################################################################################################################################################################.....+
+##########################################################################################################################################################################################################################################################
+##########################################################################################################################################################################################################################################################
+##########################################################################################################################################################################################################################################################
+##########################################################################################################################################################################################################################################################
+##########################################################################################################################################################################################################################################################
+##########################################################################################################################################################################################################################################################
+##########################################################################################################################################################################################################################################################
+##########################################################################################################################################################################################################################################################
+##########################################################################################################################################################################################################################################################
+##########################################################################################################################################################################################################################################################
+##########################################################################################################################################################################################################################################################]]
diff --git a/game/modules/tome/data/quests/orb-command.lua b/game/modules/tome/data/quests/orb-command.lua
index 51a7e438d9..4c239d6723 100644
--- a/game/modules/tome/data/quests/orb-command.lua
+++ b/game/modules/tome/data/quests/orb-command.lua
@@ -20,7 +20,27 @@
 name = "The Orbs of Command"
 desc = function(self, who)
 	local desc = {}
-	desc[#desc+1] = "You have found an orb of command that seems to be used to open the shield protecting the High Peek."
+	desc[#desc+1] = "You have found an orb of command that seems to be used to open the shield protecting the High Peak."
 	desc[#desc+1] = "There seems to be a total of four of them, the more you have the weaker the shield will be."
 	return table.concat(desc, "\n")
 end
+
+on_status_change = function(self, who, status, sub)
+	if sub then
+		if self:isCompleted("ORB_DESTRUCTION") and
+		   self:isCompleted("ORB_UNDEATH") and
+		   self:isCompleted("ORB_DRAGON") and
+		   self:isCompleted("ORB_ELEMENTS") then
+			who:setQuestStatus(self.id, engine.Quest.DONE)
+			self:open_high_peak(who)
+		end
+	end
+end
+
+open_high_peak = function(self, who)
+	local g = game.zone:makeEntityByName(game.level, "terrain", "PEAK_STAIR")
+	for j = 11, 18 do
+		game.level.map(249, j, engine.Map.TERRAIN, g)
+	end
+	game.logPlayer(who, "#LIGHT_BLUE#There is a loud crack. The way is open.")
+end
diff --git a/game/modules/tome/data/talents/techniques/superiority.lua b/game/modules/tome/data/talents/techniques/superiority.lua
index d1e371e41f..b4ee96f2e8 100644
--- a/game/modules/tome/data/talents/techniques/superiority.lua
+++ b/game/modules/tome/data/talents/techniques/superiority.lua
@@ -72,7 +72,7 @@ newTalent{
 	cooldown = 10,
 	stamina = 30,
 	action = function(self, t)
-		local tg = {type="ball", range=0, friendlyfire=true, radius=2 + self:getTalentLevel(t), talent=t}
+		local tg = {type="ball", range=0, friendlyfire=false, radius=2 + self:getTalentLevel(t), talent=t}
 		self:project(tg, self.x, self.y, function(px, py)
 			local target = game.level.map(px, py, Map.ACTOR)
 			if not target then return end
@@ -84,7 +84,7 @@ newTalent{
 		end)
 		return true
 	end,
-	info = function(self, t)	
+	info = function(self, t)
 		return ([[Call all foes in a radius of %d around you into battle, getting them into melee range in an instant.]]):format(2+self:getTalentLevel(t))
 	end,
 }
diff --git a/game/modules/tome/data/texts/unlock-mage_cryomancer.lua b/game/modules/tome/data/texts/unlock-mage_cryomancer.lua
index c60d8e6ab3..b578851f39 100644
--- a/game/modules/tome/data/texts/unlock-mage_cryomancer.lua
+++ b/game/modules/tome/data/texts/unlock-mage_cryomancer.lua
@@ -26,7 +26,7 @@ This place is Angolwen, the City of Magic, and for over one hundred years has ta
 
 You have uncovered the secrets of the ice magic and can now create new characters with the #LIGHT_GREEN#Cryomancer class#WHITE#.
 
-Pyromancers are specialized archmages, attuned to the magical properties of ice.
+Cryomancers are specialized archmages, attuned to the magical properties of ice.
 Class features:#YELLOW#
 - Cast potent ice spells to freeze your foes.
 - Freeze your foes and make them shatter into pieces.
diff --git a/game/modules/tome/data/zones/slime-tunnels/grids.lua b/game/modules/tome/data/zones/slime-tunnels/grids.lua
new file mode 100644
index 0000000000..e4860a754f
--- /dev/null
+++ b/game/modules/tome/data/zones/slime-tunnels/grids.lua
@@ -0,0 +1,63 @@
+-- ToME - Tales of Middle-Earth
+-- Copyright (C) 2009, 2010 Nicolas Casalini
+--
+-- This program is free software: you can redistribute it and/or modify
+-- it under the terms of the GNU General Public License as published by
+-- the Free Software Foundation, either version 3 of the License, or
+-- (at your option) any later version.
+--
+-- This program is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+-- GNU General Public License for more details.
+--
+-- You should have received a copy of the GNU General Public License
+-- along with this program.  If not, see <http://www.gnu.org/licenses/>.
+--
+-- Nicolas Casalini "DarkGod"
+-- darkgod@te4.org
+
+load("/data/general/grids/basic.lua")
+load("/data/general/grids/water.lua")
+load("/data/general/grids/slime.lua")
+
+newEntity{
+	define_as = "ORB_DRAGON",
+	name = "orb pedestral (dragon)", image = "terrain/orb_pedestral.png",
+	display = '_', color_r=255, color_g=255, color_b=255, back_color=colors.LIGHT_RED,
+}
+newEntity{
+	define_as = "ORB_UNDEATH",
+	name = "orb pedestral (undeath)", image = "terrain/orb_pedestral.png",
+	display = '_', color_r=255, color_g=255, color_b=255, back_color=colors.LIGHT_RED,
+}
+newEntity{
+	define_as = "ORB_ELEMENTS",
+	name = "orb pedestral (elements)", image = "terrain/orb_pedestral.png",
+	display = '_', color_r=255, color_g=255, color_b=255, back_color=colors.LIGHT_RED,
+}
+newEntity{
+	define_as = "ORB_DESTRUCTION",
+	name = "orb pedestral (destruction)", image = "terrain/orb_pedestral.png",
+	display = '_', color_r=255, color_g=255, color_b=255, back_color=colors.LIGHT_RED,
+}
+
+newEntity{
+	define_as = "PEAK_DOOR",
+	name = "sealed door", image = "terrain/granite_door1.png",
+	display = '+', color_r=238, color_g=154, color_b=77, back_color=colors.DARK_UMBER,
+	notice = true,
+	always_remember = true,
+	does_block_move = true,
+	block_sight = true,
+}
+
+newEntity{
+	define_as = "PEAK_STAIR",
+	always_remember = true,
+	show_tooltip=true,
+	name="Entrance to the High Peak",
+	display='>', color=colors.VIOLET,
+	notice = true,
+	change_level=1, change_zone="high-peak",
+}
diff --git a/game/modules/tome/data/zones/slime-tunnels/npcs.lua b/game/modules/tome/data/zones/slime-tunnels/npcs.lua
new file mode 100644
index 0000000000..c758ac3f59
--- /dev/null
+++ b/game/modules/tome/data/zones/slime-tunnels/npcs.lua
@@ -0,0 +1,23 @@
+-- ToME - Tales of Middle-Earth
+-- Copyright (C) 2009, 2010 Nicolas Casalini
+--
+-- This program is free software: you can redistribute it and/or modify
+-- it under the terms of the GNU General Public License as published by
+-- the Free Software Foundation, either version 3 of the License, or
+-- (at your option) any later version.
+--
+-- This program is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+-- GNU General Public License for more details.
+--
+-- You should have received a copy of the GNU General Public License
+-- along with this program.  If not, see <http://www.gnu.org/licenses/>.
+--
+-- Nicolas Casalini "DarkGod"
+-- darkgod@te4.org
+
+load("/data/general/npcs/jelly.lua", rarity(0))
+load("/data/general/npcs/ooze.lua", rarity(0))
+
+local Talents = require("engine.interface.ActorTalents")
diff --git a/game/modules/tome/data/zones/slime-tunnels/objects.lua b/game/modules/tome/data/zones/slime-tunnels/objects.lua
new file mode 100644
index 0000000000..cea7eb148c
--- /dev/null
+++ b/game/modules/tome/data/zones/slime-tunnels/objects.lua
@@ -0,0 +1,37 @@
+-- ToME - Tales of Middle-Earth
+-- Copyright (C) 2009, 2010 Nicolas Casalini
+--
+-- This program is free software: you can redistribute it and/or modify
+-- it under the terms of the GNU General Public License as published by
+-- the Free Software Foundation, either version 3 of the License, or
+-- (at your option) any later version.
+--
+-- This program is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+-- GNU General Public License for more details.
+--
+-- You should have received a copy of the GNU General Public License
+-- along with this program.  If not, see <http://www.gnu.org/licenses/>.
+--
+-- Nicolas Casalini "DarkGod"
+-- darkgod@te4.org
+
+load("/data/general/objects/objects.lua")
+
+newEntity{ base = "BASE_WAND",
+	define_as = "ROD_SPYDRIC_POISON",
+	name = "Rod of Spydric Poison", color=colors.LIGHT_GREEN, unique=true,
+	cost = 50,
+	elec_proof = true,
+
+	max_power = 75, power_regen = 1,
+	use_power = { name = "shoot a bolt of spyric poison", power = 25,
+		use = function(self, who)
+			local tg = {type="bolt", range=12, talent=t}
+			local x, y = who:getTarget(tg)
+			if not x or not y then return nil end
+			who:project(tg, x, y, engine.DamageType.SPYDRIC_POISON, {dam=200 + who:getMag() * 4, dur=6}, {type="slime"})
+		end
+	},
+}
diff --git a/game/modules/tome/data/zones/slime-tunnels/traps.lua b/game/modules/tome/data/zones/slime-tunnels/traps.lua
new file mode 100644
index 0000000000..4ee7b9dd16
--- /dev/null
+++ b/game/modules/tome/data/zones/slime-tunnels/traps.lua
@@ -0,0 +1,20 @@
+-- ToME - Tales of Middle-Earth
+-- Copyright (C) 2009, 2010 Nicolas Casalini
+--
+-- This program is free software: you can redistribute it and/or modify
+-- it under the terms of the GNU General Public License as published by
+-- the Free Software Foundation, either version 3 of the License, or
+-- (at your option) any later version.
+--
+-- This program is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+-- GNU General Public License for more details.
+--
+-- You should have received a copy of the GNU General Public License
+-- along with this program.  If not, see <http://www.gnu.org/licenses/>.
+--
+-- Nicolas Casalini "DarkGod"
+-- darkgod@te4.org
+
+load("/data/general/traps/water.lua")
diff --git a/game/modules/tome/data/zones/slime-tunnels/zone.lua b/game/modules/tome/data/zones/slime-tunnels/zone.lua
new file mode 100644
index 0000000000..0f9e518827
--- /dev/null
+++ b/game/modules/tome/data/zones/slime-tunnels/zone.lua
@@ -0,0 +1,55 @@
+-- ToME - Tales of Middle-Earth
+-- Copyright (C) 2009, 2010 Nicolas Casalini
+--
+-- This program is free software: you can redistribute it and/or modify
+-- it under the terms of the GNU General Public License as published by
+-- the Free Software Foundation, either version 3 of the License, or
+-- (at your option) any later version.
+--
+-- This program is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+-- GNU General Public License for more details.
+--
+-- You should have received a copy of the GNU General Public License
+-- along with this program.  If not, see <http://www.gnu.org/licenses/>.
+--
+-- Nicolas Casalini "DarkGod"
+-- darkgod@te4.org
+
+return {
+	name = "Slime Tunnels",
+	level_range = {45, 50},
+	level_scheme = "player",
+	max_level = 1,
+	decay = {300, 800},
+	actor_adjust_level = function(zone, level, e) return zone.base_level + e:getRankLevelAdjust() + level.level-1 + rng.range(-1,2) end,
+	width = 250, height = 30,
+	all_remembered = true,
+	all_lited = true,
+	persistant = "zone",
+	no_level_connectivity = true,
+	generator =  {
+		map = {
+			class = "engine.generator.map.Static",
+			map = "zones/slime-tunnels",
+		},
+		actor = {
+			class = "engine.generator.actor.Random",
+--			area = {x1=0, x2=11, y1=30, y2=410},
+			nb_npc = {20, 30},
+		},
+		trap = {
+			class = "engine.generator.trap.Random",
+			nb_trap = {0, 0},
+		},
+	},
+	levels =
+	{
+		[1] = {
+			generator = { map = {
+				up = "UP_WILDERNESS_FAR_EAST",
+			}, },
+		},
+	},
+}
diff --git a/ideas/zones.ods b/ideas/zones.ods
index e2a57fb1e34ba4e8a4563c05127263420b1d66b7..68bab0cb279a18d37b46be1650c906ab8a5d37b6 100644
GIT binary patch
delta 9324
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
BtfBw_

delta 9201
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

-- 
GitLab