From fda82e0cd78a05850985751942353932a3d94c4f Mon Sep 17 00:00:00 2001 From: empathicqubit Date: Wed, 5 May 2021 05:33:35 -0400 Subject: [PATCH] More advanced logic to calculate good tiles which allows some ropes. --- game.lua | 28 ++++++++++++++++++++++++---- spritelist.lua | 1 + 2 files changed, 25 insertions(+), 4 deletions(-) diff --git a/game.lua b/game.lua index e1be7e1..bc1d16a 100644 --- a/game.lua +++ b/game.lua @@ -486,13 +486,30 @@ function _M.getInputs() local tile = _M.getTile(dx, dy) if tile == 1 then - if _M.getTile(dx, dy-1) == 1 then + if inputs[#inputs-config.BoxRadius*2-1] == -1 then inputs[#inputs] = -1 else - inputs[#inputs] = 1 + local neighbors = 0 + for ddy=-1,1,1 do + for ddx=-1,1,1 do + if (ddy == 0 and ddx == 0) or (ddx == 0 and ddy == 1) then + goto continue + end + + if _M.getTile(dx+ddx, dy+ddy) == 0 then + neighbors = neighbors + 1 + end + + ::continue:: + end + end + + if neighbors >= 3 then + inputs[#inputs] = 1 + else + inputs[#inputs] = -1 + end end - elseif tile == 0 and _M.getTile(dx + 1, dy) == 1 and _M.getTile(dx + 1, dy - 1) == 1 then - inputs[#inputs] = -1 end for i = 1,#sprites do @@ -501,6 +518,9 @@ function _M.getInputs() local disty = math.abs(sprite.y - (_M.partyY+dy*mem.size.tile)) local dist = math.sqrt((distx * distx) + (disty * disty)) if dist <= mem.size.tile * 1.25 then + if sprite.good == 0 then + goto continue + end inputs[#inputs] = sprite.good if dist > mem.size.tile then diff --git a/spritelist.lua b/spritelist.lua index fb058e2..22d11ba 100644 --- a/spritelist.lua +++ b/spritelist.lua @@ -80,6 +80,7 @@ _M.BadSprites = { klampon = 0x01f0, flotsam = 0x01f8, klinger = 0x0200, + klingerSkidCloud = 0x0014, puftup = 0x0208, zingerAllColors = 0x0218, miniNecky = 0x0214,