diff --git a/game/engines/default/data/keybinds/move.lua b/game/engines/default/data/keybinds/move.lua index 2366bab356fef812fa6c8fc90fbedfc395be6d9d..a510b19874aaa78f72741d62b7b28f09d8da8f12 100644 --- a/game/engines/default/data/keybinds/move.lua +++ b/game/engines/default/data/keybinds/move.lua @@ -75,6 +75,12 @@ defineAction{ } -- Running +defineAction{ + default = { "uni:." }, + type = "RUN", + group = "movement", + name = "Run", +} defineAction{ default = { "sym:276:false:true:false:false", "sym:260:false:true:false:false" }, type = "RUN_LEFT", diff --git a/game/engines/default/engine/Generator.lua b/game/engines/default/engine/Generator.lua index 83a823b32f59b2e4e62337a811928a2d987df702..3f70576c079edd8f111667ad614b4208f6cacdf0 100644 --- a/game/engines/default/engine/Generator.lua +++ b/game/engines/default/engine/Generator.lua @@ -54,7 +54,7 @@ function _M:resolve(c, list, force) res = (list or self.grid_list)[res] if not res then return end if res.force_clone then - res = res:clone() +-- res = res:clone() end res:resolve() res:resolve(nil, true) diff --git a/game/engines/default/engine/Target.lua b/game/engines/default/engine/Target.lua index 98cdb79ea9e0c04f40cdd8c258239db18e65562b..965a6d45b7545848e2b9a5962c45ee25727f9847 100644 --- a/game/engines/default/engine/Target.lua +++ b/game/engines/default/engine/Target.lua @@ -250,6 +250,14 @@ function _M:freemove(dir) if self.on_set_target then self:on_set_target("freemove") end end +function _M:setDirFrom(dir, src) + local d = dir_to_coord[dir] + self.target.x = src.x + d[1] + self.target.y = src.y + d[2] + self.target.entity = game.level.map(self.target.x, self.target.y, engine.Map.ACTOR) + if self.on_set_target then self:on_set_target("dir_from") end +end + function _M:setSpot(x, y, how) self.target.x = x self.target.y = y diff --git a/game/engines/default/engine/Zone.lua b/game/engines/default/engine/Zone.lua index 3b91d330f8d8dc7217d85d7f0c4145f284b1a3c1..4746162ea2690190bdffa3d2726075136c576cf5 100644 --- a/game/engines/default/engine/Zone.lua +++ b/game/engines/default/engine/Zone.lua @@ -672,6 +672,7 @@ end function _M:newLevel(level_data, lev, old_lev, game) local map = self.map_class.new(level_data.width, level_data.height) + map.updateMap = function() end if level_data.all_lited then map:liteAll(0, 0, map.w, map.h) end if level_data.all_remembered then map:rememberAll(0, 0, map.w, map.h) end @@ -714,6 +715,10 @@ function _M:newLevel(level_data, lev, old_lev, game) end end end + -- Now update it all in one go (faster than letter the generators do it since they usualy overlay multiple terrains) + map.updateMap = nil + map:redisplay() + -- Generate actors if level_data.generator.actor and level_data.generator.actor.class then local generator = self:getGenerator("actor", level, spots) diff --git a/game/engines/default/engine/interface/GameTargeting.lua b/game/engines/default/engine/interface/GameTargeting.lua index 8748664d1d43af2ca6a214d92de72d2ffe2c2b35..96623816ae3a15b70f23ab024f693842f0783ce3 100644 --- a/game/engines/default/engine/interface/GameTargeting.lua +++ b/game/engines/default/engine/interface/GameTargeting.lua @@ -129,7 +129,7 @@ function _M:targetMode(v, msg, co, typ) self.key = self.targetmode_key self.key:setCurrent() - if self.target.target.entity and self.level.map.seens(self.target.target.entity.x, self.target.target.entity.y) and self.player ~= self.target.target.entity then + if self.target_no_star_scan or (self.target.target.entity and self.level.map.seens(self.target.target.entity.x, self.target.target.entity.y) and self.player ~= self.target.target.entity) then else local filter = nil if type(typ) == "table" and typ.first_target and typ.first_target == "friend" then @@ -177,14 +177,14 @@ function _M:targetSetupKey() RUN_LEFT_UP = function() self.target:freemove(7) self.tooltip_x, self.tooltip_y = self.level.map:getTileToScreen(self.target.target.x, self.target.target.y) end, RUN_RIGHT_UP = function() self.target:freemove(9) self.tooltip_x, self.tooltip_y = self.level.map:getTileToScreen(self.target.target.x, self.target.target.y) end, - MOVE_LEFT = function() if self.target_style == "lock" then self.target:scan(4) else self.target:freemove(4) end self.tooltip_x, self.tooltip_y = self.level.map:getTileToScreen(self.target.target.x, self.target.target.y) end, - MOVE_RIGHT = function() if self.target_style == "lock" then self.target:scan(6) else self.target:freemove(6) end self.tooltip_x, self.tooltip_y = self.level.map:getTileToScreen(self.target.target.x, self.target.target.y) end, - MOVE_UP = function() if self.target_style == "lock" then self.target:scan(8) else self.target:freemove(8) end self.tooltip_x, self.tooltip_y = self.level.map:getTileToScreen(self.target.target.x, self.target.target.y) end, - MOVE_DOWN = function() if self.target_style == "lock" then self.target:scan(2) else self.target:freemove(2) end self.tooltip_x, self.tooltip_y = self.level.map:getTileToScreen(self.target.target.x, self.target.target.y) end, - MOVE_LEFT_DOWN = function() if self.target_style == "lock" then self.target:scan(1) else self.target:freemove(1) end self.tooltip_x, self.tooltip_y = self.level.map:getTileToScreen(self.target.target.x, self.target.target.y) end, - MOVE_RIGHT_DOWN = function() if self.target_style == "lock" then self.target:scan(3) else self.target:freemove(3) end self.tooltip_x, self.tooltip_y = self.level.map:getTileToScreen(self.target.target.x, self.target.target.y) end, - MOVE_LEFT_UP = function() if self.target_style == "lock" then self.target:scan(7) else self.target:freemove(7) end self.tooltip_x, self.tooltip_y = self.level.map:getTileToScreen(self.target.target.x, self.target.target.y) end, - MOVE_RIGHT_UP = function() if self.target_style == "lock" then self.target:scan(9) else self.target:freemove(9) end self.tooltip_x, self.tooltip_y = self.level.map:getTileToScreen(self.target.target.x, self.target.target.y) end, + MOVE_LEFT = function() if self.target_style == "lock" then self.target:scan(4) elseif self.target_style == "immediate" then self.target:setDirFrom(4, self.target.target.entity or self.player) self.targetmode_key:triggerVirtual("ACCEPT") return else self.target:freemove(4) end self.tooltip_x, self.tooltip_y = self.level.map:getTileToScreen(self.target.target.x, self.target.target.y) end, + MOVE_RIGHT = function() if self.target_style == "lock" then self.target:scan(6) elseif self.target_style == "immediate" then self.target:setDirFrom(6, self.target.target.entity or self.player) self.targetmode_key:triggerVirtual("ACCEPT") return else self.target:freemove(6) end self.tooltip_x, self.tooltip_y = self.level.map:getTileToScreen(self.target.target.x, self.target.target.y) end, + MOVE_UP = function() if self.target_style == "lock" then self.target:scan(8) elseif self.target_style == "immediate" then self.target:setDirFrom(8, self.target.target.entity or self.player) self.targetmode_key:triggerVirtual("ACCEPT") return else self.target:freemove(8) end self.tooltip_x, self.tooltip_y = self.level.map:getTileToScreen(self.target.target.x, self.target.target.y) end, + MOVE_DOWN = function() if self.target_style == "lock" then self.target:scan(2) elseif self.target_style == "immediate" then self.target:setDirFrom(2, self.target.target.entity or self.player) self.targetmode_key:triggerVirtual("ACCEPT") return else self.target:freemove(2) end self.tooltip_x, self.tooltip_y = self.level.map:getTileToScreen(self.target.target.x, self.target.target.y) end, + MOVE_LEFT_DOWN = function() if self.target_style == "lock" then self.target:scan(1) elseif self.target_style == "immediate" then self.target:setDirFrom(1, self.target.target.entity or self.player) self.targetmode_key:triggerVirtual("ACCEPT") return else self.target:freemove(1) end self.tooltip_x, self.tooltip_y = self.level.map:getTileToScreen(self.target.target.x, self.target.target.y) end, + MOVE_RIGHT_DOWN = function() if self.target_style == "lock" then self.target:scan(3) elseif self.target_style == "immediate" then self.target:setDirFrom(3, self.target.target.entity or self.player) self.targetmode_key:triggerVirtual("ACCEPT") return else self.target:freemove(3) end self.tooltip_x, self.tooltip_y = self.level.map:getTileToScreen(self.target.target.x, self.target.target.y) end, + MOVE_LEFT_UP = function() if self.target_style == "lock" then self.target:scan(7) elseif self.target_style == "immediate" then self.target:setDirFrom(7, self.target.target.entity or self.player) self.targetmode_key:triggerVirtual("ACCEPT") return else self.target:freemove(7) end self.tooltip_x, self.tooltip_y = self.level.map:getTileToScreen(self.target.target.x, self.target.target.y) end, + MOVE_RIGHT_UP = function() if self.target_style == "lock" then self.target:scan(9) elseif self.target_style == "immediate" then self.target:setDirFrom(9, self.target.target.entity or self.player) self.targetmode_key:triggerVirtual("ACCEPT") return else self.target:freemove(9) end self.tooltip_x, self.tooltip_y = self.level.map:getTileToScreen(self.target.target.x, self.target.target.y) end, MOVE_STAY = function() self.target:setSpot(self.target.source_actor.x, self.target.source_actor.y, "freemove") self.tooltip_x, self.tooltip_y = self.level.map:getTileToScreen(self.target.target.x, self.target.target.y) @@ -228,12 +228,17 @@ function _M:targetGetForPlayer(typ) if self.target.forced then return unpack(self.target.forced) end if coroutine.running() and typ then local msg + self.target_no_star_scan = nil if type(typ) == "string" then msg, typ = typ, nil elseif type(typ) == "table" then - if typ.default_target then self.target.target.entity = typ.default_target end + if typ.default_target then + self.target.target.entity = typ.default_target + self.target_no_star_scan = true + end msg = typ.msg end self:targetMode("exclusive", msg, coroutine.running(), typ) + if typ.immediate_keys then self.target_style = "immediate" end if typ.nolock then self.target_style = "free" end if typ.nowarning then self.target_warning = false end return coroutine.yield() diff --git a/game/modules/tome/class/Game.lua b/game/modules/tome/class/Game.lua index 8bccfdb9e7143a8ec9acde890b81f9eb5c500284..0a6d155ad39b3737223fd17f13a26ea878a77fb7 100644 --- a/game/modules/tome/class/Game.lua +++ b/game/modules/tome/class/Game.lua @@ -997,6 +997,15 @@ function _M:setupCommands() MOVE_RIGHT_DOWN = function() self.player:moveDir(3) end, MOVE_STAY = function() if self.player:enoughEnergy() then self.player:describeFloor(self.player.x, self.player.y) self.player:useEnergy() end end, + RUN = function() + game.log("Run in which direction?") + local co = coroutine.create(function() + local x, y = self.player:getTarget{type="hit", no_restrict=true, range=1, immediate_keys=true, default_target=self.player} + if x and y then self.player:runInit(util.getDir(x, y, self.player.x, self.player.y)) end + end) + local ok, err = coroutine.resume(co) + if not ok and err then print(debug.traceback(co)) error(err) end + end, RUN_LEFT = function() self.player:runInit(4) end, RUN_RIGHT = function() self.player:runInit(6) end, RUN_UP = function() self.player:runInit(8) end, diff --git a/game/modules/tome/class/NicerTiles.lua b/game/modules/tome/class/NicerTiles.lua index 5a60880e5bd80e1941e7a84789ec9b4dceeb9d16..153d516f62b5bb73d38275c328129838e8df86cf 100644 --- a/game/modules/tome/class/NicerTiles.lua +++ b/game/modules/tome/class/NicerTiles.lua @@ -213,6 +213,7 @@ function _M:niceTileReplace(level, i, j, g, nt) self:replace(i, j, self:getTile(nt.base)) end + --- Make water have nice transition to other stuff function _M:niceTileGenericBorders(level, i, j, g, nt, type, allow) local g8 = level.map:checkEntity(i, j-1, Map.TERRAIN, "subtype") or type @@ -256,6 +257,73 @@ function _M:niceTileOuterSpace(level, i, j, g, nt) self:niceTileGenericBorders(level, i, j, g, nt, "rocks", {void=true}) end +local defs = { +grass = { method="borders", type="grass", + default8={add_mos={{image="terrain/grass/grass_2_%02d.png", display_y=-1}}, min=1, max=5}, + default2={add_mos={{image="terrain/grass/grass_8_%02d.png", display_y=1}}, min=1, max=5}, + default4={add_mos={{image="terrain/grass/grass_6_%02d.png", display_x=-1}}, min=1, max=5}, + default6={add_mos={{image="terrain/grass/grass_4_%02d.png", display_x=1}}, min=1, max=4}, + + default1={add_mos={{image="terrain/grass/grass_9_%02d.png", display_x=-1, display_y=1}}, min=1, max=3}, + default3={add_mos={{image="terrain/grass/grass_7_%02d.png", display_x=1, display_y=1}}, min=1, max=3}, + default7={add_mos={{image="terrain/grass/grass_3_%02d.png", display_x=-1, display_y=-1}}, min=1, max=3}, + default9={add_mos={{image="terrain/grass/grass_1_%02d.png", display_x=1, display_y=-1}}, min=1, max=3}, + + default1i={add_mos={{image="terrain/grass/grass_inner_1_%02d.png", display_x=-1, display_y=1}}, min=1, max=3}, + default3i={add_mos={{image="terrain/grass/grass_inner_3_%02d.png", display_x=1, display_y=1}}, min=1, max=3}, + default7i={add_mos={{image="terrain/grass/grass_inner_7_%02d.png", display_x=-1, display_y=-1}}, min=1, max=3}, + default9i={add_mos={{image="terrain/grass/grass_inner_9_%02d.png", display_x=1, display_y=-1}}, min=1, max=3}, +}, +sand = { method="borders", type="sand", forbid={grass=true}, + default8={add_mos={{image="terrain/sand/sand_2_%02d.png", display_y=-1}}, min=1, max=5}, + default2={add_mos={{image="terrain/sand/sand_8_%02d.png", display_y=1}}, min=1, max=5}, + default4={add_mos={{image="terrain/sand/sand_6_%02d.png", display_x=-1}}, min=1, max=5}, + default6={add_mos={{image="terrain/sand/sand_4_%02d.png", display_x=1}}, min=1, max=4}, + + default1={add_mos={{image="terrain/sand/sand_9_%02d.png", display_x=-1, display_y=1}}, min=1, max=3}, + default3={add_mos={{image="terrain/sand/sand_7_%02d.png", display_x=1, display_y=1}}, min=1, max=3}, + default7={add_mos={{image="terrain/sand/sand_3_%02d.png", display_x=-1, display_y=-1}}, min=1, max=3}, + default9={add_mos={{image="terrain/sand/sand_1_%02d.png", display_x=1, display_y=-1}}, min=1, max=3}, + + default1i={add_mos={{image="terrain/sand/sand_inner_1_%02d.png", display_x=-1, display_y=1}}, min=1, max=3}, + default3i={add_mos={{image="terrain/sand/sand_inner_3_%02d.png", display_x=1, display_y=1}}, min=1, max=3}, + default7i={add_mos={{image="terrain/sand/sand_inner_7_%02d.png", display_x=-1, display_y=-1}}, min=1, max=3}, + default9i={add_mos={{image="terrain/sand/sand_inner_9_%02d.png", display_x=1, display_y=-1}}, min=1, max=3}, +}, +grass_wm = { method="borders", type="grass", + default8={add_mos={{image="terrain/grass/grass_2_%02d.png", display_y=-1}}, min=1, max=5}, + default2={add_mos={{image="terrain/grass/grass_8_%02d.png", display_y=1}}, min=1, max=5}, + default4={add_mos={{image="terrain/grass/grass_6_%02d.png", display_x=-1}}, min=1, max=5}, + default6={add_mos={{image="terrain/grass/grass_4_%02d.png", display_x=1}}, min=1, max=4}, + + default1={add_mos={{image="terrain/grass/grass_9_%02d.png", display_x=-1, display_y=1}}, min=1, max=3}, + default3={add_mos={{image="terrain/grass/grass_7_%02d.png", display_x=1, display_y=1}}, min=1, max=3}, + default7={add_mos={{image="terrain/grass/grass_3_%02d.png", display_x=-1, display_y=-1}}, min=1, max=3}, + default9={add_mos={{image="terrain/grass/grass_1_%02d.png", display_x=1, display_y=-1}}, min=1, max=3}, + + default1i={add_mos={{image="terrain/grass/grass_inner_1_%02d.png", display_x=-1, display_y=1}}, min=1, max=3}, + default3i={add_mos={{image="terrain/grass/grass_inner_3_%02d.png", display_x=1, display_y=1}}, min=1, max=3}, + default7i={add_mos={{image="terrain/grass/grass_inner_7_%02d.png", display_x=-1, display_y=-1}}, min=1, max=3}, + default9i={add_mos={{image="terrain/grass/grass_inner_9_%02d.png", display_x=1, display_y=-1}}, min=1, max=3}, + + water8={add_mos={{image="terrain/grass/grass_2_%02d.png", display_y=-1}}, min=1, max=1}, + water2={add_mos={{image="terrain/grass/grass_8_%02d.png", display_y=1}}, min=1, max=1}, + water4={add_mos={{image="terrain/grass/grass_6_%02d.png", display_x=-1}}, min=1, max=1}, + water6={add_mos={{image="terrain/grass/grass_4_%02d.png", display_x=1}}, min=1, max=1}, + + water1={add_mos={{image="terrain/grass/grass_9_%02d.png", display_x=-1, display_y=1}}, min=1, max=1}, + water3={add_mos={{image="terrain/grass/grass_7_%02d.png", display_x=1, display_y=1}}, min=1, max=1}, + water7={add_mos={{image="terrain/grass/grass_3_%02d.png", display_x=-1, display_y=-1}}, min=1, max=1}, + water9={add_mos={{image="terrain/grass/grass_1_%02d.png", display_x=1, display_y=-1}}, min=1, max=1}, + + water1i={add_mos={{image="terrain/grass/grass_inner_1_%02d.png", display_x=-1, display_y=1}}, min=1, max=1}, + water3i={add_mos={{image="terrain/grass/grass_inner_3_%02d.png", display_x=1, display_y=1}}, min=1, max=1}, + water7i={add_mos={{image="terrain/grass/grass_inner_7_%02d.png", display_x=-1, display_y=-1}}, min=1, max=1}, + water9i={add_mos={{image="terrain/grass/grass_inner_9_%02d.png", display_x=1, display_y=-1}}, min=1, max=1}, +} +} + + --- Make water have nice transition to other stuff function _M:editTileGenericBorders(level, i, j, g, nt, type) local g5 = level.map:checkEntity(i, j, Map.TERRAIN, "subtype") or type @@ -299,6 +367,9 @@ end function _M:editTileBorders(level, i, j, g, nt) self:editTileGenericBorders(level, i, j, g, nt, nt.type or "grass") end +function _M:editTileBorders_def(level, i, j, g, nt) + self:editTileGenericBorders(level, i, j, g, defs[nt.def], defs[nt.def].type or "grass") +end -- This array is precomputed, it holds the possible combinations of walls and the nice tile they generate -- The data is bit-encoded diff --git a/game/modules/tome/data/general/grids/forest.lua b/game/modules/tome/data/general/grids/forest.lua index 77ba0bdbb13c72ea0d398948634d855821a2ff0f..9e699277a60fd721726f8eaa84e2274b66db2751 100644 --- a/game/modules/tome/data/general/grids/forest.lua +++ b/game/modules/tome/data/general/grids/forest.lua @@ -17,22 +17,7 @@ -- Nicolas Casalini "DarkGod" -- darkgod@te4.org -local grass_editer = { method="borders", type="grass", - default8={add_mos={{image="terrain/grass/grass_2_%02d.png", display_y=-1}}, min=1, max=5}, - default2={add_mos={{image="terrain/grass/grass_8_%02d.png", display_y=1}}, min=1, max=5}, - default4={add_mos={{image="terrain/grass/grass_6_%02d.png", display_x=-1}}, min=1, max=5}, - default6={add_mos={{image="terrain/grass/grass_4_%02d.png", display_x=1}}, min=1, max=4}, - - default1={add_mos={{image="terrain/grass/grass_9_%02d.png", display_x=-1, display_y=1}}, min=1, max=3}, - default3={add_mos={{image="terrain/grass/grass_7_%02d.png", display_x=1, display_y=1}}, min=1, max=3}, - default7={add_mos={{image="terrain/grass/grass_3_%02d.png", display_x=-1, display_y=-1}}, min=1, max=3}, - default9={add_mos={{image="terrain/grass/grass_1_%02d.png", display_x=1, display_y=-1}}, min=1, max=3}, - - default1i={add_mos={{image="terrain/grass/grass_inner_1_%02d.png", display_x=-1, display_y=1}}, min=1, max=3}, - default3i={add_mos={{image="terrain/grass/grass_inner_3_%02d.png", display_x=1, display_y=1}}, min=1, max=3}, - default7i={add_mos={{image="terrain/grass/grass_inner_7_%02d.png", display_x=-1, display_y=-1}}, min=1, max=3}, - default9i={add_mos={{image="terrain/grass/grass_inner_9_%02d.png", display_x=1, display_y=-1}}, min=1, max=3}, -} +local grass_editer = { method="borders_def", def="grass"} newEntity{ define_as = "GRASS", diff --git a/game/modules/tome/data/general/grids/sand.lua b/game/modules/tome/data/general/grids/sand.lua index 6657cd7ca2881c69e4732f1af9648e13663e4a3d..1d0f31b605b7311b207023d1b639ea2cfcd86615 100644 --- a/game/modules/tome/data/general/grids/sand.lua +++ b/game/modules/tome/data/general/grids/sand.lua @@ -17,22 +17,7 @@ -- Nicolas Casalini "DarkGod" -- darkgod@te4.org -local sand_editer = { method="borders", type="sand", forbid={grass=true}, - default8={add_mos={{image="terrain/sand/sand_2_%02d.png", display_y=-1}}, min=1, max=5}, - default2={add_mos={{image="terrain/sand/sand_8_%02d.png", display_y=1}}, min=1, max=5}, - default4={add_mos={{image="terrain/sand/sand_6_%02d.png", display_x=-1}}, min=1, max=5}, - default6={add_mos={{image="terrain/sand/sand_4_%02d.png", display_x=1}}, min=1, max=4}, - - default1={add_mos={{image="terrain/sand/sand_9_%02d.png", display_x=-1, display_y=1}}, min=1, max=3}, - default3={add_mos={{image="terrain/sand/sand_7_%02d.png", display_x=1, display_y=1}}, min=1, max=3}, - default7={add_mos={{image="terrain/sand/sand_3_%02d.png", display_x=-1, display_y=-1}}, min=1, max=3}, - default9={add_mos={{image="terrain/sand/sand_1_%02d.png", display_x=1, display_y=-1}}, min=1, max=3}, - - default1i={add_mos={{image="terrain/sand/sand_inner_1_%02d.png", display_x=-1, display_y=1}}, min=1, max=3}, - default3i={add_mos={{image="terrain/sand/sand_inner_3_%02d.png", display_x=1, display_y=1}}, min=1, max=3}, - default7i={add_mos={{image="terrain/sand/sand_inner_7_%02d.png", display_x=-1, display_y=-1}}, min=1, max=3}, - default9i={add_mos={{image="terrain/sand/sand_inner_9_%02d.png", display_x=1, display_y=-1}}, min=1, max=3}, -} +local sand_editer = { method="borders_def", def="sand"} newEntity{ define_as = "SAND", diff --git a/game/modules/tome/data/zones/wilderness/grids.lua b/game/modules/tome/data/zones/wilderness/grids.lua index 12055db46212d2b19da29c67528fb3a83f661ae8..bd8856f8b2dfe3634fb9df3807fdbd3f292d238c 100644 --- a/game/modules/tome/data/zones/wilderness/grids.lua +++ b/game/modules/tome/data/zones/wilderness/grids.lua @@ -17,54 +17,8 @@ -- Nicolas Casalini "DarkGod" -- darkgod@te4.org -local grass_editer = { method="borders", type="grass", - default8={add_mos={{image="terrain/grass/grass_2_%02d.png", display_y=-1}}, min=1, max=5}, - default2={add_mos={{image="terrain/grass/grass_8_%02d.png", display_y=1}}, min=1, max=5}, - default4={add_mos={{image="terrain/grass/grass_6_%02d.png", display_x=-1}}, min=1, max=5}, - default6={add_mos={{image="terrain/grass/grass_4_%02d.png", display_x=1}}, min=1, max=4}, - - default1={add_mos={{image="terrain/grass/grass_9_%02d.png", display_x=-1, display_y=1}}, min=1, max=3}, - default3={add_mos={{image="terrain/grass/grass_7_%02d.png", display_x=1, display_y=1}}, min=1, max=3}, - default7={add_mos={{image="terrain/grass/grass_3_%02d.png", display_x=-1, display_y=-1}}, min=1, max=3}, - default9={add_mos={{image="terrain/grass/grass_1_%02d.png", display_x=1, display_y=-1}}, min=1, max=3}, - - default1i={add_mos={{image="terrain/grass/grass_inner_1_%02d.png", display_x=-1, display_y=1}}, min=1, max=3}, - default3i={add_mos={{image="terrain/grass/grass_inner_3_%02d.png", display_x=1, display_y=1}}, min=1, max=3}, - default7i={add_mos={{image="terrain/grass/grass_inner_7_%02d.png", display_x=-1, display_y=-1}}, min=1, max=3}, - default9i={add_mos={{image="terrain/grass/grass_inner_9_%02d.png", display_x=1, display_y=-1}}, min=1, max=3}, - - water8={add_mos={{image="terrain/grass/grass_2_%02d.png", display_y=-1}}, min=1, max=1}, - water2={add_mos={{image="terrain/grass/grass_8_%02d.png", display_y=1}}, min=1, max=1}, - water4={add_mos={{image="terrain/grass/grass_6_%02d.png", display_x=-1}}, min=1, max=1}, - water6={add_mos={{image="terrain/grass/grass_4_%02d.png", display_x=1}}, min=1, max=1}, - - water1={add_mos={{image="terrain/grass/grass_9_%02d.png", display_x=-1, display_y=1}}, min=1, max=1}, - water3={add_mos={{image="terrain/grass/grass_7_%02d.png", display_x=1, display_y=1}}, min=1, max=1}, - water7={add_mos={{image="terrain/grass/grass_3_%02d.png", display_x=-1, display_y=-1}}, min=1, max=1}, - water9={add_mos={{image="terrain/grass/grass_1_%02d.png", display_x=1, display_y=-1}}, min=1, max=1}, - - water1i={add_mos={{image="terrain/grass/grass_inner_1_%02d.png", display_x=-1, display_y=1}}, min=1, max=1}, - water3i={add_mos={{image="terrain/grass/grass_inner_3_%02d.png", display_x=1, display_y=1}}, min=1, max=1}, - water7i={add_mos={{image="terrain/grass/grass_inner_7_%02d.png", display_x=-1, display_y=-1}}, min=1, max=1}, - water9i={add_mos={{image="terrain/grass/grass_inner_9_%02d.png", display_x=1, display_y=-1}}, min=1, max=1}, -} - -local sand_editer = { method="borders", type="sand", forbid={grass=true}, - default8={add_mos={{image="terrain/sand/sand_2_%02d.png", display_y=-1}}, min=1, max=5}, - default2={add_mos={{image="terrain/sand/sand_8_%02d.png", display_y=1}}, min=1, max=5}, - default4={add_mos={{image="terrain/sand/sand_6_%02d.png", display_x=-1}}, min=1, max=5}, - default6={add_mos={{image="terrain/sand/sand_4_%02d.png", display_x=1}}, min=1, max=4}, - - default1={add_mos={{image="terrain/sand/sand_9_%02d.png", display_x=-1, display_y=1}}, min=1, max=3}, - default3={add_mos={{image="terrain/sand/sand_7_%02d.png", display_x=1, display_y=1}}, min=1, max=3}, - default7={add_mos={{image="terrain/sand/sand_3_%02d.png", display_x=-1, display_y=-1}}, min=1, max=3}, - default9={add_mos={{image="terrain/sand/sand_1_%02d.png", display_x=1, display_y=-1}}, min=1, max=3}, - - default1i={add_mos={{image="terrain/sand/sand_inner_1_%02d.png", display_x=-1, display_y=1}}, min=1, max=3}, - default3i={add_mos={{image="terrain/sand/sand_inner_3_%02d.png", display_x=1, display_y=1}}, min=1, max=3}, - default7i={add_mos={{image="terrain/sand/sand_inner_7_%02d.png", display_x=-1, display_y=-1}}, min=1, max=3}, - default9i={add_mos={{image="terrain/sand/sand_inner_9_%02d.png", display_x=1, display_y=-1}}, min=1, max=3}, -} +local grass_editer = {method="borders_def", def="grass_wm"} +local sand_editer = {method="borders_def", def="sand"} -------------------------------------------------------------------------------- -- Grassland diff --git a/game/modules/tome/data/zones/wilderness/zone.lua b/game/modules/tome/data/zones/wilderness/zone.lua index ba55e2ecb5aab2e9219804018068c7dc8ae1d2cb..f5cfc02fde81cfdb833968fc5f8f4b32cd7d9f82 100644 --- a/game/modules/tome/data/zones/wilderness/zone.lua +++ b/game/modules/tome/data/zones/wilderness/zone.lua @@ -62,6 +62,8 @@ return { if e.immediate then e = e:clone() e:resolve() e:resolve(nil, true) + for i,s in ipairs(game.level.spots) do print("=====",i,table.serialize(s,nil,true)) end FIX ME !!! angolwen?! + print("<<<", e.immediate[1], e.immediate[2]) local where = game.level:pickSpotRemove{type=e.immediate[1], subtype=e.immediate[2]} while where and (game.level.map:checkAllEntities(where.x, where.y, "block_move") or not game.level.map:checkAllEntities(where.x, where.y, "can_encounter")) do where = game.level:pickSpotRemove{type=e.immediate[1], subtype=e.immediate[2]} end if e:check("on_encounter", where) then