+ Implemented tests for battle.low_health_alarm hook

This commit is contained in:
sirj0k3r
2026-07-31 22:17:19 +01:00
parent 6fd9741fab
commit 33899c237e
+36
View File
@@ -718,6 +718,42 @@ do
unsub()
end
-- ------- battle.low_health_alarm hook: mirrors the siren toggle
do
local Sound = require("src.core.Sound")
local calls = {}
local origStart, origStop = Sound.startLoop, Sound.stopLoop
Sound.startLoop = function(data, name) calls[#calls + 1] = { "start", name } end
Sound.stopLoop = function(name) calls[#calls + 1] = { "stop", name } end
local game = makeGame({ Pokemon.new(Data, "BULBASAUR", 20) })
local battle = BattleState.newWild(game, "RATTATA", 5)
battle.player.mon.hp = 1
battle.player.shownHP = 1
local seenOn = nil
local unsub = hooks:wrap("battle.low_health_alarm", function(nextFn, ctx)
seenOn = ctx.on
return nextFn(ctx)
end)
battle:updateFx()
check(seenOn == true, "battle.low_health_alarm hook sees the alarm toggle on")
check(calls[#calls][1] == "start" and calls[#calls][2] == "Low_Health_Alarm",
"an unmodified hook still starts the siren loop")
unsub()
unsub = hooks:wrap("battle.low_health_alarm", function(nextFn, ctx)
ctx.on = false
return nextFn(ctx)
end)
battle:updateFx()
check(calls[#calls][1] == "stop", "a mod can force the alarm off before vanilla acts")
unsub()
Sound.startLoop, Sound.stopLoop = origStart, origStop
end
-- ------- battle events: the scripted sequence
do