fix: enemy mon appears before its send-out animation

The trainer intro was the only enemy send-out path that never set
enemySendingOut, so the front sprite drew at full size the moment the
trainer pic walked off, held through "X sent out Y!", and the grow-in
then played over a mon that had already arrived. Set it with the pic
teardown and clear it with startGrowIn, matching the mid-battle
replacement and the player's own send-out.

Also repairs two parity suites that could not load at all: their game
stubs lacked input.isDown, which battle text has read every frame since
typing started honouring PrintLetterDelay. intro_chrome additionally
pressed A inside PromptText's ProtectedDelay3 hold, which ignores the
button for TEXT_PRE_ADVANCE frames.
This commit is contained in:
spiritsnails
2026-08-01 23:55:23 -06:00
parent ebbc55c4d0
commit 2b75c07571
3 changed files with 44 additions and 2 deletions
+9
View File
@@ -1476,12 +1476,21 @@ function BattleState:enter()
table.insert(self.queue, { wait = 16 })
self:act(function()
self.showEnemyTrainer = false
-- the slot is EMPTY from here until AnimateSendingOutMon runs below:
-- the pic has walked off and the mon is still in its ball, so nothing
-- stands in the enemy slot while TrainerSentOutText prints. Without
-- this the front sprite popped in full-size the instant the trainer
-- left, sat there through the whole text box, and the grow-in then
-- restarted it from nothing -- the mon appearing before it was sent
-- out. Mirrors the flag the mid-battle replacement already sets.
self.enemySendingOut = true
self:slidePic("foe")
end)
self:say(Strings("%s sent\nout %s!", self.trainer.name, self.enemy.name))
self:act(function()
-- EnemySendOutFirstMon (core.asm:1421-1434): after the text the
-- pic grows out of the ball (AnimateSendingOutMon), then the cry
self.enemySendingOut = false
self:startGrowIn(self.enemy)
end)
queueEnemyCry()