@@ -94,6 +94,11 @@ private void RainWorld_Start(On.RainWorld.orig_Start orig, RainWorld self)
94
94
On . Oracle . Update += Oracle_Update ;
95
95
On . TempleGuard . Update += TempleGuard_Update ;
96
96
_ = new ILHook ( typeof ( HUD . Map ) . GetProperty ( nameof ( HUD . Map . discoverTexture ) ) . GetSetMethod ( ) , Map_discoverTexture_set ) ;
97
+ On . PlayerProgression . GetOrInitiateSaveState += PlayerProgression_GetOrInitiateSaveState ;
98
+ On . SaveState . setDenPosition += SaveState_setDenPosition ;
99
+ On . RoomRealizer . RemoveNotVisitedRooms += RoomRealizer_RemoveNotVisitedRooms ;
100
+ On . ProcessManager . CreateValidationLabel += ProcessManager_CreateValidationLabel ;
101
+ On . OracleBehavior . FindPlayer += OracleBehavior_FindPlayer ;
97
102
98
103
Logger . LogDebug ( "Finished start thingy" ) ;
99
104
}
@@ -130,7 +135,7 @@ private void RainWorld_Start(On.RainWorld.orig_Start orig, RainWorld self)
130
135
orig ( self ) ;
131
136
}
132
137
133
- // Mem leak fixer
138
+ // Mem leak fixer (?)
134
139
private void Map_discoverTexture_set ( ILContext il )
135
140
{
136
141
// You'd think I could just use a normal Hook, not an ILHook. Unfortunately fuck you, the Hook implementation is broken for property setters.
@@ -257,6 +262,36 @@ private void RainWorld_Awake(ILContext il)
257
262
}
258
263
259
264
#region fixes
265
+ // No looking for player while screenshotting, will crash I think
266
+ private void OracleBehavior_FindPlayer ( On . OracleBehavior . orig_FindPlayer orig , OracleBehavior self )
267
+ {
268
+ orig ( self ) ;
269
+ }
270
+
271
+ // No validation label while screenshotting. Womp womp.
272
+ private void ProcessManager_CreateValidationLabel ( On . ProcessManager . orig_CreateValidationLabel orig , ProcessManager self )
273
+ {
274
+ self . validationLabel = null ;
275
+ }
276
+
277
+ // Assume safari
278
+ private void RoomRealizer_RemoveNotVisitedRooms ( On . RoomRealizer . orig_RemoveNotVisitedRooms orig , RoomRealizer self )
279
+ {
280
+ // no call orig to act like safari
281
+ }
282
+
283
+ // Assume safari
284
+ private void SaveState_setDenPosition ( On . SaveState . orig_setDenPosition orig , SaveState self )
285
+ {
286
+ self . SetDenPositionForSafari ( ) ;
287
+ }
288
+
289
+ // Assume safari
290
+
291
+ private SaveState PlayerProgression_GetOrInitiateSaveState ( On . PlayerProgression . orig_GetOrInitiateSaveState orig , PlayerProgression self , SlugcatStats . Name saveStateNumber , RainWorldGame game , ProcessManager . MenuSetup setup , bool saveAsDeathOrQuit )
292
+ {
293
+ return orig ( self , saveStateNumber , game , setup , false ) ;
294
+ }
260
295
261
296
// Only show guardians if user wants to
262
297
private void TempleGuard_Update ( On . TempleGuard . orig_Update orig , TempleGuard self , bool eu )
@@ -533,6 +568,7 @@ private RainWorldGame.SetupValues RainWorld_LoadSetupValues(On.RainWorld.orig_Lo
533
568
534
569
setup . cycleTimeMax = 10000 ;
535
570
setup . cycleTimeMin = 10000 ;
571
+ setup . disableRain = true ;
536
572
537
573
setup . gravityFlickerCycleMin = 10000 ;
538
574
setup . gravityFlickerCycleMax = 10000 ;
@@ -666,8 +702,15 @@ private void RainWorldGame_ctor(On.RainWorldGame.orig_ctor orig, RainWorldGame s
666
702
manager . rainWorld . safariSlugcat = SlugcatStats . Name . White ;
667
703
manager . rainWorld . safariRegion = "SU" ;
668
704
705
+ // Unfortunately safari mode also assumes we have MSC enabled so... just play pretend :3 (it'll throw exceptions otherwise)
706
+ bool oldmsc = ModManager . MSC ;
707
+ ModManager . MSC = true ;
708
+
669
709
orig ( self , manager ) ;
670
710
711
+ ModManager . MSC = oldmsc ;
712
+ RainWorld . lockGameTimer = true ;
713
+
671
714
// No safari overseers
672
715
if ( self . cameras [ 0 ] . followAbstractCreature != null )
673
716
{
0 commit comments