@@ -773,6 +773,14 @@ export function createMascotGame(): Game {
773773 setPlaying ( false ) ;
774774 hideMsg ( ) ;
775775 }
776+ function parkPlayerAtCastleDoor ( ) {
777+ player . x = CASTLE_X + CASTLE_W / 2 - player . w / 2 ;
778+ player . y = GROUND_TOP - player . h ;
779+ player . vx = 0 ;
780+ player . vy = 0 ;
781+ player . onGround = true ;
782+ camX = Math . max ( 0 , Math . min ( WORLD_W - VIEW_W , player . x + player . w / 2 - VIEW_W / 2 ) ) ;
783+ }
776784 function showWin ( ) {
777785 state = 'win' ;
778786 setPlaying ( false ) ;
@@ -2266,6 +2274,7 @@ export function createMascotGame(): Game {
22662274 __mgameEnterPipe ?: ( ) => void ;
22672275 __mgameAdvanceVoid ?: ( frames ?: number ) => void ;
22682276 __mgameTriggerWin ?: ( ) => void ;
2277+ __mgameAdvanceEnding ?: ( frames ?: number ) => void ;
22692278 __mgameTriggerGameOver ?: ( ) => void ;
22702279 } ;
22712280 const debugWindow = window as DebugWindow ;
@@ -2311,13 +2320,16 @@ export function createMascotGame(): Game {
23112320 for ( let i = 0 ; i < frames && state === 'void' ; i ++ ) updateVoidChase ( ) ;
23122321 } ;
23132322 debugWindow . __mgameTriggerWin = ( ) => {
2314- player . x = CASTLE_X + 18 - player . w ;
2315- player . y = GROUND_TOP - player . h ;
2316- player . vx = 0 ;
2317- player . vy = 0 ;
2318- player . onGround = true ;
23192323 startEnding ( ) ;
2320- camX = Math . max ( 0 , Math . min ( WORLD_W - VIEW_W , player . x + player . w / 2 - VIEW_W / 2 ) ) ;
2324+ parkPlayerAtCastleDoor ( ) ;
2325+ } ;
2326+ debugWindow . __mgameAdvanceEnding = ( frames = WIN_CARD_DELAY_FRAMES ) => {
2327+ if ( state !== 'ending' ) {
2328+ startEnding ( ) ;
2329+ parkPlayerAtCastleDoor ( ) ;
2330+ }
2331+ for ( let i = 0 ; i < frames && state === 'ending' ; i ++ ) updateEnding ( ) ;
2332+ render ( ) ;
23212333 } ;
23222334 debugWindow . __mgameTriggerGameOver = ( ) => {
23232335 lives = 0 ;
0 commit comments