mirror of
https://github.com/bryanthaboi/gen1recomp.git
synced 2026-08-28 18:06:09 +02:00
57 lines
1.7 KiB
Lua
57 lines
1.7 KiB
Lua
-- engine/events/overworld.asm:1150-1165, engine/events/field_moves.asm:5-10
|
|
|
|
package.path = "./?.lua;./?/init.lua;" .. package.path
|
|
|
|
love = require("tests.love_stub")
|
|
|
|
local T = require("tests.harness")
|
|
local Sound = require("src.core.Sound")
|
|
local World = require("src.world.gen2.World")
|
|
|
|
local busy = false
|
|
Sound.sfxBusy = function() return busy end
|
|
|
|
local log = {}
|
|
local world = setmetatable({}, { __index = World })
|
|
world.setNickname = function() end
|
|
world.showText = function(_, _, done) if done then done() end end
|
|
world.playSfxNamed = function() log[#log + 1] = "sfx" end
|
|
world.replaceBlock = function(_, index, blockId)
|
|
log[#log + 1] = "block:" .. tostring(index) .. ":" .. tostring(blockId)
|
|
return true
|
|
end
|
|
|
|
world:runWhirlpool({ text = "USED WHIRLPOOL", blockIndex = 7, replacement = 3 })
|
|
T.eq(#log, 0, "the box closing does not swap the block yet")
|
|
T.eq(world.fieldMove and world.fieldMove.phase, "whirlpoolsfx",
|
|
"closing the box parks the WaitSFX phase")
|
|
|
|
busy = false
|
|
world:updateFieldMove()
|
|
T.same(log, { "sfx" }, "the first WaitSFX passes and SFX_SURF starts")
|
|
|
|
busy = true
|
|
world:updateFieldMove()
|
|
world:updateFieldMove()
|
|
T.same(log, { "sfx" }, "the whirlpool is still on screen while the sfx plays")
|
|
|
|
busy = false
|
|
world:updateFieldMove()
|
|
T.same(log, { "sfx", "block:7:3" },
|
|
"the block is swapped once the second WaitSFX clears")
|
|
T.eq(world.fieldMove, nil, "and the phase is done")
|
|
|
|
-- The callback path (DisappearWhirlpool via callasm) carries no block, and
|
|
-- must not invent one.
|
|
do
|
|
log = {}
|
|
world.fieldMove = nil
|
|
world:playWhirlpoolSound()
|
|
busy = false
|
|
world:updateFieldMove()
|
|
world:updateFieldMove()
|
|
T.same(log, { "sfx" }, "a bare sound call swaps nothing")
|
|
end
|
|
|
|
T.finish("gen2 whirlpool block after sfx bug 1862")
|