From 744e40d952958a2dde9989c0f6bc6e388d3f58b3 Mon Sep 17 00:00:00 2001 From: dg <dg@51575b47-30f0-44d4-a5cc-537603b46e54> Date: Thu, 5 Jul 2012 20:41:42 +0000 Subject: [PATCH] The Maze corridors are now 2 wide Lowered the size of the Maze a bit, but with the same number of foes git-svn-id: http://svn.net-core.org/repos/t-engine4@5337 51575b47-30f0-44d4-a5cc-537603b46e54 --- .../default/engine/generator/map/Maze.lua | 34 ++++++++++++------- .../tome/data/zones/ardhungol/zone.lua | 2 ++ game/modules/tome/data/zones/maze/zone.lua | 3 +- 3 files changed, 26 insertions(+), 13 deletions(-) diff --git a/game/engines/default/engine/generator/map/Maze.lua b/game/engines/default/engine/generator/map/Maze.lua index 125d3a92b8..9f90aa4e67 100644 --- a/game/engines/default/engine/generator/map/Maze.lua +++ b/game/engines/default/engine/generator/map/Maze.lua @@ -25,13 +25,23 @@ module(..., package.seeall, class.inherit(engine.Generator)) function _M:init(zone, map, grid_list, data) engine.Generator.init(self, zone, map, level) self.data = data + data.widen_w = data.widen_w or 1 + data.widen_h = data.widen_h or 1 + data.w = data.w or math.floor(map.w / data.widen_w) + data.h = data.h or math.floor(map.h / data.widen_h) self.grid_list = self.zone.grid_list 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("wall")) - self.map.room_map[i][j].maze_wall = true + local do_tile = function(i, j, wall) + for ii = 0, self.data.widen_w-1 do for jj = 0, self.data.widen_h-1 do + self.map(i*self.data.widen_w+ii, j*self.data.widen_h+jj, Map.TERRAIN, self:resolve(wall and "wall" or "floor")) + end end + self.map.room_map[i][j].maze_wall = wall + end + + for i = 0, self.data.w - 1 do for j = 0, self.data.h - 1 do + do_tile(i, j, true) end end local xpos, ypos = 1, 1 @@ -59,20 +69,20 @@ function _M:generate(lev, old_lev) if #dir > 0 then local d = dir[rng.range(1, #dir)] if d == 4 then - self.map(xpos-2, ypos, Map.TERRAIN, self:resolve("floor")) self.map.room_map[xpos-2][ypos].maze_wall = nil - self.map(xpos-1, ypos, Map.TERRAIN, self:resolve("floor")) self.map.room_map[xpos-1][ypos].maze_wall = nil + do_tile(xpos-2, ypos, false) + do_tile(xpos-1, ypos, false) xpos = xpos - 2 elseif d == 6 then - self.map(xpos+2, ypos, Map.TERRAIN, self:resolve("floor")) self.map.room_map[xpos+2][ypos].maze_wall = nil - self.map(xpos+1, ypos, Map.TERRAIN, self:resolve("floor")) self.map.room_map[xpos+1][ypos].maze_wall = nil + do_tile(xpos+2, ypos, false) + do_tile(xpos+1, ypos, false) xpos = xpos + 2 elseif d == 8 then - self.map(xpos, ypos-2, Map.TERRAIN, self:resolve("floor")) self.map.room_map[xpos][ypos-2].maze_wall = nil - self.map(xpos, ypos-1, Map.TERRAIN, self:resolve("floor")) self.map.room_map[xpos][ypos-1].maze_wall = nil + do_tile(xpos, ypos-2, false) + do_tile(xpos, ypos-1, false) ypos = ypos - 2 elseif d == 2 then - self.map(xpos, ypos+2, Map.TERRAIN, self:resolve("floor")) self.map.room_map[xpos][ypos+2].maze_wall = nil - self.map(xpos, ypos+1, Map.TERRAIN, self:resolve("floor")) self.map.room_map[xpos][ypos+1].maze_wall = nil + do_tile(xpos, ypos+2, false) + do_tile(xpos, ypos+1, false) ypos = ypos + 2 end table.insert(moves, {xpos, ypos}) @@ -81,7 +91,7 @@ function _M:generate(lev, old_lev) end end -- Always starts at 1, 1 - local ux, uy = 1, 1 + local ux, uy = 1 * self.data.widen_w, 1 * self.data.widen_h local dx, dy = math.floor(self.map.w/2)*2-1-2*(1-math.mod(self.map.w,2)), math.floor(self.map.h/2)*2-1-2*(1-math.mod(self.map.h,2)) self.map(ux, uy, Map.TERRAIN, self:resolve("up")) self.map.room_map[ux][uy].special = "exit" diff --git a/game/modules/tome/data/zones/ardhungol/zone.lua b/game/modules/tome/data/zones/ardhungol/zone.lua index f85dfe29c3..47660fe726 100644 --- a/game/modules/tome/data/zones/ardhungol/zone.lua +++ b/game/modules/tome/data/zones/ardhungol/zone.lua @@ -66,5 +66,7 @@ return { up = "CAVE_LADDER_UP_WILDERNESS", }, }, }, + [2] = { width = 40, height = 40, generator = {map = {min_floor=600}} }, + [3] = { width = 20, height = 20, generator = {map = {min_floor=200}} }, }, } diff --git a/game/modules/tome/data/zones/maze/zone.lua b/game/modules/tome/data/zones/maze/zone.lua index 71e4973236..74817550e0 100644 --- a/game/modules/tome/data/zones/maze/zone.lua +++ b/game/modules/tome/data/zones/maze/zone.lua @@ -24,7 +24,7 @@ return { max_level = 2, 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 = 80, height = 80, + width = 60, height = 60, -- all_remembered = true, -- all_lited = true, persistent = "zone", @@ -38,6 +38,7 @@ return { down = "DOWN", wall = "OLD_WALL", floor = "OLD_FLOOR", + widen_w = 2, widen_h = 2, }, actor = { class = "mod.class.generator.actor.Random", -- GitLab