Skip to content

Commit e0c9ae8

Browse files
committed
Maybe MSC dependency fixes
Haven't tested it but hoping it works
1 parent c40cde6 commit e0c9ae8

File tree

1 file changed

+44
-1
lines changed

1 file changed

+44
-1
lines changed

src/Plugin.cs

Lines changed: 44 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,11 @@ private void RainWorld_Start(On.RainWorld.orig_Start orig, RainWorld self)
9494
On.Oracle.Update += Oracle_Update;
9595
On.TempleGuard.Update += TempleGuard_Update;
9696
_ = 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;
97102

98103
Logger.LogDebug("Finished start thingy");
99104
}
@@ -130,7 +135,7 @@ private void RainWorld_Start(On.RainWorld.orig_Start orig, RainWorld self)
130135
orig(self);
131136
}
132137

133-
// Mem leak fixer
138+
// Mem leak fixer (?)
134139
private void Map_discoverTexture_set(ILContext il)
135140
{
136141
// 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)
257262
}
258263

259264
#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+
}
260295

261296
// Only show guardians if user wants to
262297
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
533568

534569
setup.cycleTimeMax = 10000;
535570
setup.cycleTimeMin = 10000;
571+
setup.disableRain = true;
536572

537573
setup.gravityFlickerCycleMin = 10000;
538574
setup.gravityFlickerCycleMax = 10000;
@@ -666,8 +702,15 @@ private void RainWorldGame_ctor(On.RainWorldGame.orig_ctor orig, RainWorldGame s
666702
manager.rainWorld.safariSlugcat = SlugcatStats.Name.White;
667703
manager.rainWorld.safariRegion = "SU";
668704

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+
669709
orig(self, manager);
670710

711+
ModManager.MSC = oldmsc;
712+
RainWorld.lockGameTimer = true;
713+
671714
// No safari overseers
672715
if (self.cameras[0].followAbstractCreature != null)
673716
{

0 commit comments

Comments
 (0)