diff --git a/game/engine/Map.lua b/game/engine/Map.lua index 2b8e393356d8aff5a0b48feea1f8c71c471f9b94..75a9f365a07bee2513364c32e9c0775c2d05265b 100644 --- a/game/engine/Map.lua +++ b/game/engine/Map.lua @@ -667,6 +667,9 @@ function _M:import(map, dx, dy, sx, sy, sw, sh) for i = sx, sx + sw - 1 do for j = sy, sy + sh - 1 do local x, y = dx + i, dy + j self.map[x + y * self.w] = map.map[i + j * map.w] + for z, e in pairs(self.map[x + y * self.w]) do + if e.move then e:move(x, y, true) end + end self.remembers(x, y, map.remembers(i, j)) self.seens(x, y, map.seens(i, j)) diff --git a/game/engine/Zone.lua b/game/engine/Zone.lua index 14c87e983bff91c84d64faf2d72a32cf72d3af77..786c80a8b80daf44587c87a948366f9b0116511d 100644 --- a/game/engine/Zone.lua +++ b/game/engine/Zone.lua @@ -21,6 +21,7 @@ require "engine.class" local Savefile = require "engine.Savefile" local Map = require "engine.Map" local Astar = require "engine.Astar" +local print = function() end --- Defines a zone: a set of levels, with depth, nps, objects, level generator, ... module(..., package.seeall, class.make) @@ -157,6 +158,15 @@ function _M:checkFilter(e, filter) return true end +--- Return a string describing the filter +function _M:filterToString(filter) + local ps = "" + for what, check in pairs(filter) do + ps = ps .. what.."="..check.."," + end + return ps +end + --- Picks an entity from a computed probability list function _M:pickEntity(list) if #list == 0 then return nil end diff --git a/game/modules/tome/data/maps/vaults/greater-checkerboard.lua b/game/modules/tome/data/maps/vaults/greater-checkerboard.lua index 9337a1ec4728e012c82a454eb571f01fa93da453..d89b02922f6b4ba160a2bd11aacfff79b8123229 100644 --- a/game/modules/tome/data/maps/vaults/greater-checkerboard.lua +++ b/game/modules/tome/data/maps/vaults/greater-checkerboard.lua @@ -18,9 +18,9 @@ -- darkgod@te4.org defineTile('.', "FLOOR") -defineTile('#', "WALL") +defineTile('#', "FLOOR") defineTile('X', "WALL") -defineTile('8', "FLOOR", {random_filter={add_levels=14}}, {random_filter={add_levels=20}}) +defineTile('8', "FLOOR", {random_filter={add_levels=15}}, {random_filter={add_levels=20}}) return { [[.......................................]], diff --git a/game/modules/tome/data/rooms/greater_vault.lua b/game/modules/tome/data/rooms/greater_vault.lua index a3288ebb41d81d419129df3b530b31eb22485a2c..02ce84ed11b90cac455f5482a6945d4ebfc5ae2e 100644 --- a/game/modules/tome/data/rooms/greater_vault.lua +++ b/game/modules/tome/data/rooms/greater_vault.lua @@ -24,18 +24,21 @@ local list = { return function(gen, id, lev, old_lev) local vaultid = rng.table(list) - local vault_map = engine.Map.new(max_w, max_h) local Static = require("engine.generator.map.Static") local data = table.clone(gen.data) data.map = "vaults/"..vaultid + local old_map = gen.level.map + gen.level.map = vault_map local vault = Static.new(gen.zone, vault_map, gen.level, data) + vault:generate(lev, old_lev) + gen.level.map = old_map - local w = map.w - local h = map.h + local w = vault_map.w + local h = vault_map.h return { name="greater_vault"..w.."x"..h, w=w, h=h, generator = function(self, x, y, is_lit) gen.map:import(vault_map, x, y) - map:close() + vault_map:close() -- Make it a room, and make it special so that we do not tunnel through for i = x, x + w - 1 do for j = y, y + h - 1 do gen.map.room_map[i][j].special = true diff --git a/game/modules/tome/data/zones/tower-amon-sul/zone.lua b/game/modules/tome/data/zones/tower-amon-sul/zone.lua index 11c968ee10c85862ed798b7c1f2e38cf23e32469..02ba83c8b8a5362f72c5e9cbf0d7d8cc895c3289 100644 --- a/game/modules/tome/data/zones/tower-amon-sul/zone.lua +++ b/game/modules/tome/data/zones/tower-amon-sul/zone.lua @@ -25,15 +25,15 @@ return { 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 = 50, height = 50, - all_remembered = true, - all_lited = true, +-- all_remembered = true, +-- all_lited = true, persistant = "zone", ambiant_music = "Swashing the buck.ogg", generator = { map = { class = "engine.generator.map.Roomer", nb_rooms = 10, - rooms = {"greater_vault"}, + rooms = {"simple", "pilar", {"money_vault",5}}, lite_room_chance = 100, ['.'] = "FLOOR", ['#'] = "WALL",