mirror of
https://github.com/bryanthaboi/gen1recomp.git
synced 2026-08-15 07:41:21 +02:00
41 lines
1.6 KiB
Lua
41 lines
1.6 KiB
Lua
-- Driver: Oak's Pallet Town escort. Logs the player/Oak separation the
|
|
-- whole way down and shoots the walk mid-street, so the formation is
|
|
-- checkable by eye as well as by number (the escort holds one cell,
|
|
-- ~16px; a desynced Oak drifts off by a cell per two steps).
|
|
return function(game)
|
|
local U = dofile("tests/drivers/util.lua")
|
|
local DIR = os.getenv("SHOT_DIR") or "/tmp/shots"
|
|
U.teleport(game, "PALLET_TOWN", 10, 3, "up")
|
|
local ow = game.overworld
|
|
local function oak()
|
|
for _, n in ipairs(ow.npcs or {}) do
|
|
if n.def and n.def.name == "PALLETTOWN_OAK" then return n end
|
|
end
|
|
end
|
|
U.hold(game, "up", 40)
|
|
local worst, samples = 0, 0
|
|
for _ = 1, 1200 do
|
|
if game.stack:top() ~= ow then U.tap(game, "a") end
|
|
local o = oak()
|
|
if o and #ow.scriptMoves > 0 and ow.map.id == "PALLET_TOWN" then
|
|
local d = math.abs(o.px - ow.player.px) + math.abs(o.py - ow.player.py)
|
|
if samples > 0 or d <= 20 then
|
|
samples = samples + 1
|
|
if d > worst then worst = d end
|
|
if samples == 60 then U.shot(game, DIR .. "/escort_midwalk.png") end
|
|
if samples % 24 == 1 then
|
|
U.log(("t=%d player=(%d,%d) oak=(%d,%d) dist=%dpx")
|
|
:format(samples, ow.player.cellX, ow.player.cellY,
|
|
o.cellX, o.cellY, d))
|
|
end
|
|
end
|
|
end
|
|
if ow.map.id == "OAKS_LAB" then break end
|
|
U.wait(2)
|
|
end
|
|
U.log(("ESCORT worst separation: %dpx over %d samples"):format(worst, samples))
|
|
U.log("map:", ow.map.id, "flag:",
|
|
tostring(game.save.flags.EVENT_FOLLOWED_OAK_INTO_LAB))
|
|
love.event.quit()
|
|
end
|