Files
gen1recomp/tests/engine/gen2_caught_ball_palette_bug1896.lua

49 lines
1.5 KiB
Lua

-- engine/battle_anims/anim_commands.asm:213 (#1896)
package.path = "./?.lua;./?/init.lua;" .. package.path
love = require("tests.love_stub")
local T = require("tests.harness")
local AnimRunner = require("src.battle.gen2.AnimRunner")
local function runnerWith(rows, palettes)
local runner = AnimRunner.new({
animId = "ANIM_THROW_POKE_BALL",
battleTurn = 0,
data = { scripts = { click = rows } },
})
runner:start("click")
runner.objects.playFrame = function(objects)
objects.oam = {}
for _, name in ipairs(palettes) do
objects.oam[#objects.oam + 1] = { x = 80, y = 80, tile = 0, attr = 0,
palette = name }
end
return false
end
return runner
end
do
local runner = runnerWith({ { "keepsprites" }, { "ret" } },
{ "PAL_BATTLE_OB_RED", "PAL_BATTLE_OB_BLUE" })
T.eq(runner:step(), false, "keepsprites + ret ends the script the same frame")
T.eq(runner.keepSprites, true, "and BATTLEANIM_KEEPSPRITES_F is set")
T.eq(#runner:oam(), 2, "the ball's OBJs stay on screen")
for _, obj in ipairs(runner:oam()) do
T.eq(obj.palette, "PAL_BATTLE_OB_ENEMY",
"every kept OBJ is remapped onto the wild mon's palette")
end
end
do
local runner = runnerWith({ { "ret" } },
{ "PAL_BATTLE_OB_RED", "PAL_BATTLE_OB_BLUE" })
T.eq(runner:step(), false, "a break-free ret still ends the script")
T.eq(runner.keepSprites, false, "with no keepsprites flag")
T.eq(#runner:oam(), 0, "so BattleAnim_ClearOAM deletes the sprites instead")
end
T.finish("gen2 caught ball palette bug 1896")