From 296334d57d4f083ef40a30458d9ba201c2cf6fb9 Mon Sep 17 00:00:00 2001
From: dg <dg@51575b47-30f0-44d4-a5cc-537603b46e54>
Date: Sun, 1 Aug 2010 21:08:28 +0000
Subject: [PATCH] New random encounter in the far east.

git-svn-id: http://svn.net-core.org/repos/t-engine4@976 51575b47-30f0-44d4-a5cc-537603b46e54
---
 game/modules/tome/class/Encounter.lua         | 13 +++++++++
 game/modules/tome/class/Game.lua              |  7 +++--
 .../data/general/encounters/arda-fareast.lua  | 28 ++++++++++++++++++-
 .../data/maps/wilderness/arda-fareast.lua     |  4 +--
 4 files changed, 46 insertions(+), 6 deletions(-)

diff --git a/game/modules/tome/class/Encounter.lua b/game/modules/tome/class/Encounter.lua
index 55f0971a41..f0ae1a41e0 100644
--- a/game/modules/tome/class/Encounter.lua
+++ b/game/modules/tome/class/Encounter.lua
@@ -65,6 +65,19 @@ function _M:checkFilter(filter)
 	return true
 end
 
+function _M:findSpotGeneric(who, fct)
+	local spots = {}
+	for i = -1, 1 do for j = -1, 1 do if i ~= 0 or j ~= 0 then
+		if fct(game.level.map, who.x + i, who.y + j) then
+			spots[#spots+1] = {who.x + i, who.y + j}
+		end
+	end end end
+	if #spots > 0 then
+		local s = rng.table(spots)
+		return s[1], s[2]
+	end
+end
+
 function _M:findSpot(who, what)
 	what = what or "block_move"
 	local spots = {}
diff --git a/game/modules/tome/class/Game.lua b/game/modules/tome/class/Game.lua
index 31c5989fc2..7f50d4e3c6 100644
--- a/game/modules/tome/class/Game.lua
+++ b/game/modules/tome/class/Game.lua
@@ -468,9 +468,10 @@ function _M:setupCommands()
 				self.player.esp.all = 1
 				self.player.esp.range = 50
 				self.player.inc_damage.all = 100000
-				self:changeLevel(2, "flooded-cave")
---				game.memory_levels["wilderness-arda-fareast-1"] = game.level
---				self.player:grantQuest("orc-pride")
+--				self:changeLevel(2, "flooded-cave")
+				self:changeLevel(1, "wilderness-arda-fareast")
+				game.memory_levels["wilderness-arda-fareast-1"] = game.level
+				self.player:grantQuest("orc-pride")
 --				self.player:grantQuest("escort-duty")
 			end
 		end,
diff --git a/game/modules/tome/data/general/encounters/arda-fareast.lua b/game/modules/tome/data/general/encounters/arda-fareast.lua
index 697816b240..45a6eb3380 100644
--- a/game/modules/tome/data/general/encounters/arda-fareast.lua
+++ b/game/modules/tome/data/general/encounters/arda-fareast.lua
@@ -53,6 +53,32 @@ newEntity{
 	end,
 }
 
+newEntity{
+	name = "Underwater Cave",
+	type = "harmless", subtype = "special", unique = true,
+	level_range = {30, 40},
+	rarity = 1,
+	coords = {{ x=0, y=0, w=100, h=100}},
+	special_filter = function(self)
+		return self:findSpotGeneric(game.player, function(map, x, y) local enc = map:checkAllEntities(x, y, "can_encounter") return enc and enc == "water" end) and true or false
+	end,
+	on_encounter = function(self, who)
+		local x, y = self:findSpotGeneric(who, function(map, x, y) local enc = map:checkAllEntities(x, y, "can_encounter") return enc and enc == "water" end)
+		if not x then return end
+
+		local g = mod.class.Grid.new{
+			show_tooltip=true,
+			name="Entrance to an underwater cave",
+			display='>', color=colors.AQUAMARINE,
+			notice = true,
+			change_level=1, change_zone="flooded-cave"
+		}
+		g:resolve() g:resolve(nil, true)
+		game.zone:addEntity(game.level, g, "terrain", x, y)
+		game.logPlayer(who, "#LIGHT_BLUE#You notice an entrance to an underwater cave.")
+		return true
+	end,
+}
 ---------------------------- Hostiles -----------------------------
 
 -- Ambushed!
@@ -61,7 +87,7 @@ newEntity{
 	name = "Orcs",
 	type = "hostile", subtype = "ambush",
 	level_range = {1, 50},
-	rarity = 8,
+	rarity = 11118,
 	coords = {{ x=0, y=0, w=100, h=100}},
 	special_filter = function(self)
 		return game.player:reactionToward{faction="orc-pride"} < 0 and true or false
diff --git a/game/modules/tome/data/maps/wilderness/arda-fareast.lua b/game/modules/tome/data/maps/wilderness/arda-fareast.lua
index 3dade50ac8..3cf3807e7f 100644
--- a/game/modules/tome/data/maps/wilderness/arda-fareast.lua
+++ b/game/modules/tome/data/maps/wilderness/arda-fareast.lua
@@ -20,9 +20,9 @@
 -- The far east on Arda
 
 quickEntity('w', {always_remember = true, show_tooltip=true, name='Sun Wall', display='^', color=colors.GOLD, back_color=colors.CRIMSON, image="terrain/mountain.png", tint=colors.GOLD, block_move=true})
-quickEntity('=', {always_remember = true, show_tooltip=true, name='the great sea', display='~', color=colors.DARK_BLUE, back_color=colors.BLUE, image="terrain/river.png", block_move=true, shader = "water", textures = { function() return _3DNoise, true end }, })
+quickEntity('=', {always_remember = true, show_tooltip=true, name='the great sea', display='~', color=colors.DARK_BLUE, back_color=colors.BLUE, image="terrain/river.png", block_move=true, can_encounter="water", shader = "water", textures = { function() return _3DNoise, true end }, })
 quickEntity(' ', {always_remember = true, show_tooltip=true, name='plains', display='.', color=colors.LIGHT_GREEN, back_color=colors.DARK_GREEN, image="terrain/grass.png", can_encounter="plain", equilibrium_level=-10})
-quickEntity('~', {always_remember = true, show_tooltip=true, name='river', display='~', color={r=0, g=80, b=255}, back_color=colors.BLUE, image="terrain/river.png", can_encounter="plain", equilibrium_level=-10, shader = "water", textures = { function() return _3DNoise, true end }, })
+quickEntity('~', {always_remember = true, show_tooltip=true, name='river', display='~', color={r=0, g=80, b=255}, back_color=colors.BLUE, image="terrain/river.png", can_encounter="plain", equilibrium_level=-10, can_encounter="water", shader = "water", textures = { function() return _3DNoise, true end }, })
 quickEntity('s', {always_remember = true, show_tooltip=true, name='desert', display='.', color={r=203,g=189,b=72}, back_color={r=163,g=149,b=42}, image="terrain/sand.png", can_encounter="desert", equilibrium_level=-10})
 quickEntity('t', {always_remember = true, show_tooltip=true, name='forest', display='#', color=colors.LIGHT_GREEN, back_color=colors.DARK_GREEN, image="terrain/grass.png", add_displays = {mod.class.Grid.new{image="terrain/tree_alpha1.png"}}, block_move=true})
 quickEntity('p', {always_remember = true, show_tooltip=true, name='oasis', display='#', color=colors.LIGHT_GREEN, back_color={r=163,g=149,b=42}, image="terrain/sand.png", add_displays = {mod.class.Grid.new{image="terrain/palmtree_alpha1.png"}}, block_move=true})
-- 
GitLab