mirror of
https://github.com/bryanthaboi/gen1recomp.git
synced 2026-08-17 11:11:10 +02:00
Guarantee the post-battle fade-in by moving it into BattleState:finish()
pushBattle wrapped onFinish to push Transition.battleReturn on any non-lose result, but that only fires for callers that route through pushBattle correctly. Moving the same push into BattleState:finish() instead -- the one choke point every battle (wild, trainer, walk-up, scripted, link) already passes through on exit -- makes the fade unconditional rather than dependent on each call site's wiring.
This commit is contained in:
@@ -4430,7 +4430,21 @@ function BattleState:finish()
|
||||
require("src.core.Music").restoreMap(self.data)
|
||||
self.game.stack:pop()
|
||||
Runtime.emit("battle.ended", { battle = self, result = self.result or "run" })
|
||||
if self.onFinish then self.onFinish(self.result or "run") end
|
||||
-- Coming back from the battle screen is a fade, not a cut: EnterMap sees
|
||||
-- BIT_BATTLE_OVER_OR_BLACKOUT set and runs MapEntryAfterBattle
|
||||
-- (home/overworld.asm:22, :749-753) = GBFadeInFromWhite. This is the one
|
||||
-- choke point every battle -- wild, trainer, walk-up, scripted, link --
|
||||
-- passes through on its way out, so the fade is guaranteed here rather
|
||||
-- than depending on each caller having wrapped onFinish correctly.
|
||||
local result = self.result or "run"
|
||||
local onFinish = self.onFinish
|
||||
if result == "lose" then
|
||||
-- the blackout path warps to the heal point with its own transition
|
||||
if onFinish then onFinish(result) end
|
||||
return
|
||||
end
|
||||
self.game.stack:push(require("src.render.Transition").battleReturn(self.game,
|
||||
function() if onFinish then onFinish(result) end end))
|
||||
end
|
||||
|
||||
-- ---------------------------------------------------------------------
|
||||
|
||||
Reference in New Issue
Block a user