File tree Expand file tree Collapse file tree 1 file changed +13
-1
lines changed
Expand file tree Collapse file tree 1 file changed +13
-1
lines changed Original file line number Diff line number Diff line change 1616using MonoMod . InlineRT ;
1717using MonoMod . Utils ;
1818
19+ using _Level = Celeste . Level ;
1920using _Player = Celeste . Player ;
2021
2122namespace Celeste {
@@ -183,7 +184,8 @@ private void UpdateSprite() {
183184 if ( framesAlive < 6 && level != null ) {
184185 diedInGBJ ++ ;
185186 if ( diedInGBJ != 0 && ( diedInGBJ % 2 ) == 0 && level . Session . Area . GetLevelSet ( ) != "Celeste" && ! CoreModule . Settings . DisableAntiSoftlock ) {
186- level . Pause ( ) ;
187+ if ( ! Everest . Events . Player . PauseInGBJ ( this ) )
188+ level . Pause ( ) ;
187189 return null ;
188190 }
189191 }
@@ -375,6 +377,16 @@ internal static void Spawn(_Player player)
375377 internal static void Die ( _Player player )
376378 => OnDie ? . Invoke ( player ) ;
377379
380+ /// <summary>
381+ /// Called in <see cref="_Player.Die"/>, just before pausing the game as a softlock prevention measure.
382+ /// By returning <c>true</c> you can prevent the pause (and cancel invocation of this event).
383+ ///
384+ /// Intended to be used when <see cref="_Level.PauseLock"/> is enabled during normal gameplay where the player might die.
385+ /// </summary>
386+ public static event Func < _Player , bool > OnPauseInGBJ ;
387+ internal static bool PauseInGBJ ( _Player player )
388+ => OnPauseInGBJ . InvokeWhileFalse ( player ) ;
389+
378390 /// <summary>
379391 /// Called in the Player constructor during <see cref="StateMachine"/> initialisation, to be used to register custom Player states.
380392 /// </summary>
You can’t perform that action at this time.
0 commit comments