@@ -96,9 +96,12 @@ private IEnumerator Sequence() {
9696 yield return null ;
9797
9898 // Fade out the outline, fade in the tiles. Oh, and make ourselves collidable.
99- wiggler . Start ( ) ;
100- tileFader . Replace ( TileFade ( 1f , tiles , true ) ) ;
101- outlineFader . Replace ( TileFade ( 0f , outlineTiles , true ) ) ;
99+ if ( isRespawn )
100+ wiggler . Start ( 1.5f , 1.5f ) ;
101+ else
102+ wiggler . Start ( 0.5f , 4f ) ;
103+ tileFader . Replace ( TileFade ( 1f , tiles , ! isRespawn ) ) ;
104+ outlineFader . Replace ( TileFade ( 0f , outlineTiles , ! isRespawn ) ) ;
102105 Collidable = true ;
103106
104107 // Wait until player is found
@@ -110,11 +113,12 @@ private IEnumerator Sequence() {
110113 yield return null ;
111114
112115 // Fade out tiles, fade in outline.
113- tileFader . Replace ( TileFade ( 0f , tiles ) ) ;
114- outlineFader . Replace ( TileFade ( 1f , outlineTiles ) ) ;
116+ tileFader . Replace ( TileFade ( 0f , tiles , true ) ) ;
117+ outlineFader . Replace ( TileFade ( 1f , outlineTiles , true ) ) ;
115118
116119 // Do nothing until next activation
117120 activated = false ;
121+ isRespawn = false ;
118122 }
119123 }
120124
@@ -136,7 +140,7 @@ private bool CheckToStayEnabled() {
136140 // Fade the passed tiles in or out.
137141 private IEnumerator TileFade ( float to , List < Image > targetTiles , bool fast = false ) {
138142 float from = 1f - to ;
139- for ( float t = 0f ; t < 1f ; t += Engine . DeltaTime * ( fast ? 6f : 2f ) ) {
143+ for ( float t = 0f ; t < 1f ; t += Engine . DeltaTime * ( fast ? 5f : 1.5f ) ) {
140144 foreach ( Image img in targetTiles )
141145 img . Color = Color . White * ( from + ( to - from ) * Ease . CubeInOut ( t ) ) ;
142146 yield return null ;
@@ -147,39 +151,42 @@ private IEnumerator TileFade(float to, List<Image> targetTiles, bool fast = fals
147151 // Bubble and player detection hooks
148152 public static void Load ( ) {
149153 On . Celeste . Player . CassetteFlyEnd += SafeActivatorCasetteFly ;
150- On . Celeste . Player . IntroRespawnEnd += SafeActivatorRespawn ;
154+ On . Celeste . Player . IntroRespawnBegin += SafeActivatorRespawn ;
151155 }
152156 public static void Unload ( ) {
153157 On . Celeste . Player . CassetteFlyEnd -= SafeActivatorCasetteFly ;
154- On . Celeste . Player . IntroRespawnEnd -= SafeActivatorRespawn ;
158+ On . Celeste . Player . IntroRespawnBegin -= SafeActivatorRespawn ;
155159 }
156160
157161 private static void SafeActivatorCasetteFly ( On . Celeste . Player . orig_CassetteFlyEnd orig , Player self ) {
158162 orig ( self ) ;
159- SafeActivate ( self ) ;
163+ SafeActivate ( self , false ) ;
160164 }
161- private static void SafeActivatorRespawn ( On . Celeste . Player . orig_IntroRespawnEnd orig , Player self ) {
165+ private static void SafeActivatorRespawn ( On . Celeste . Player . orig_IntroRespawnBegin orig , Player self ) {
162166 orig ( self ) ;
163- SafeActivate ( self ) ;
167+ SafeActivate ( self , true ) ;
164168 }
165169
166- private static void SafeActivate ( Player player ) {
170+ private static void SafeActivate ( Player player , bool respawn ) {
167171 SafeRespawnCrumble target = player . Scene . Tracker . GetNearestEntity < SafeRespawnCrumble > ( player . Position ) ;
168172 if ( target == null )
169173 return ;
170174
171175 if ( target . Left < player . X &&
172176 target . Right > player . X &&
173177 target . Top - 12f <= player . Y &&
174- target . Bottom > player . Y )
175- target . activated = true ;
178+ target . Bottom > player . Y ) {
179+ target . activated = true ;
180+ target . isRespawn = respawn ;
181+ }
176182 }
177183
178184 private List < Image > tiles ;
179185 private List < Image > outlineTiles ;
180186 private Coroutine tileFader ;
181187 private Coroutine outlineFader ;
182188 private Wiggler wiggler ;
183- public bool activated = false ;
189+ private bool activated = false ;
190+ private bool isRespawn = false ;
184191 }
185192}
0 commit comments