-- #1635: PrintItemUseTextAndRemoveItem items must request Heal_Ailment -- via extra.useJingle after the "X used Y!" line. -- -- ROM-free: stubs items/text only (CI headless has no data/generated/). -- -- luajit tests/engine/item_use_jingle_bug1635.lua package.path = "./?.lua;./?/init.lua;" .. package.path if not _G.love then _G.love = require("tests.love_stub") end local S = require("tests.harness").suite("item use Heal_Ailment jingle #1635") local check, eq = S.check, S.eq local ItemEffects = require("src.inventory.ItemEffects") local SaveData = require("src.core.SaveData") local ITEM_IDS = { "REPEL", "SUPER_REPEL", "MAX_REPEL", "X_ATTACK", "X_DEFEND", "X_SPEED", "X_SPECIAL", "X_ACCURACY", "DIRE_HIT", "GUARD_SPEC", "POKE_DOLL", } local Data = { items = {}, text = {} } for _, id in ipairs(ITEM_IDS) do Data.items[id] = { name = id:gsub("_", " ") } end local save = SaveData.newGame() save.player.name = "RED" local function battleStub(playerName) return { kind = "wild", player = { name = playerName or "PIKACHU", stages = { attack = 0, defense = 0, speed = 0, special = 0, accuracy = 0 }, mon = {}, }, enemy = { name = "RATTATA" }, } end local function assertJingle(itemId, battle) local result, msgs, extra = ItemEffects.use(Data, save, itemId, nil, battle) check(result == "consumed" or result == "consumed_escape", itemId .. " succeeds (" .. tostring(result) .. ")") check(extra and extra.useJingle, itemId .. " sets useJingle") check(msgs and msgs[1] and msgs[1]:find("used"), itemId .. " prints used line") return result, msgs, extra end for _, id in ipairs({ "REPEL", "SUPER_REPEL", "MAX_REPEL" }) do assertJingle(id, nil) end local b = battleStub() for _, id in ipairs({ "X_ATTACK", "X_DEFEND", "X_SPEED", "X_SPECIAL", "X_ACCURACY", "DIRE_HIT", "GUARD_SPEC", }) do local _, _, extra = assertJingle(id, b) if id == "X_ATTACK" then check(extra.afterMessages and #extra.afterMessages > 0, "X_ATTACK follows used line with effect text") end end local _, _, dollExtra = assertJingle("POKE_DOLL", battleStub()) eq(dollExtra.afterMessages, nil, "Poké Doll is used-line only") S.finish()