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