From d096a60f684e7d5122580316ba70a6ad32289169 Mon Sep 17 00:00:00 2001 From: dg <dg@51575b47-30f0-44d4-a5cc-537603b46e54> Date: Thu, 16 Jun 2011 07:57:03 +0000 Subject: [PATCH] Added a "run" command that prompts for a run direction, bound to . by default git-svn-id: http://svn.net-core.org/repos/t-engine4@3666 51575b47-30f0-44d4-a5cc-537603b46e54 --- game/engines/default/data/keybinds/move.lua | 6 ++ game/engines/default/engine/Generator.lua | 2 +- game/engines/default/engine/Target.lua | 8 +++ game/engines/default/engine/Zone.lua | 5 ++ .../engine/interface/GameTargeting.lua | 25 ++++--- game/modules/tome/class/Game.lua | 9 +++ game/modules/tome/class/NicerTiles.lua | 71 +++++++++++++++++++ .../tome/data/general/grids/forest.lua | 17 +---- game/modules/tome/data/general/grids/sand.lua | 17 +---- .../tome/data/zones/wilderness/grids.lua | 50 +------------ .../tome/data/zones/wilderness/zone.lua | 2 + 11 files changed, 121 insertions(+), 91 deletions(-) diff --git a/game/engines/default/data/keybinds/move.lua b/game/engines/default/data/keybinds/move.lua index 2366bab356..a510b19874 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 83a823b32f..3f70576c07 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 98cdb79ea9..965a6d45b7 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 3b91d330f8..4746162ea2 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 8748664d1d..96623816ae 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 8bccfdb9e7..0a6d155ad3 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 5a60880e5b..153d516f62 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 77ba0bdbb1..9e699277a6 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 6657cd7ca2..1d0f31b605 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 12055db462..bd8856f8b2 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 ba55e2ecb5..f5cfc02fde 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 -- GitLab