Skip to content

Commit e49b148

Browse files
committed
Fix crash with payphone hook
If you enter a room with a payphone but without lights being disabled, the game will crash. This fixes that.
1 parent 0e66ed7 commit e49b148

File tree

1 file changed

+9
-11
lines changed

1 file changed

+9
-11
lines changed

Triggers/RemoveLightSourcesTrigger.cs

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -16,22 +16,20 @@ class RemoveLightSourcesTrigger : Trigger {
1616

1717
private static bool HooksEnabled = false;
1818

19-
public RemoveLightSourcesTrigger(EntityData data, Vector2 offset) : base(data, offset) {
20-
LightsField = typeof(LightingRenderer).GetField("lights", BindingFlags.NonPublic | BindingFlags.Instance);
21-
BloomField = typeof(Payphone).GetField("bloom", BindingFlags.NonPublic | BindingFlags.Instance);
22-
LightField = typeof(Payphone).GetField("light", BindingFlags.NonPublic | BindingFlags.Instance);
23-
}
19+
public RemoveLightSourcesTrigger(EntityData data, Vector2 offset) : base(data, offset) { }
2420

2521
public static void Load() {
2622
Everest.Events.Level.OnLoadLevel += LevelLoadHandler;
2723
Everest.Events.Level.OnExit += OnExitHandler;
28-
On.Celeste.Payphone.Update += PayphoneHook;
24+
25+
LightsField = typeof(LightingRenderer).GetField("lights", BindingFlags.NonPublic | BindingFlags.Instance);
26+
BloomField = typeof(Payphone).GetField("bloom", BindingFlags.NonPublic | BindingFlags.Instance);
27+
LightField = typeof(Payphone).GetField("light", BindingFlags.NonPublic | BindingFlags.Instance);
2928
}
3029

3130
public static void Unload() {
3231
Everest.Events.Level.OnLoadLevel -= LevelLoadHandler;
3332
Everest.Events.Level.OnExit -= OnExitHandler;
34-
On.Celeste.Payphone.Update -= PayphoneHook;
3533
}
3634

3735
private static void PayphoneHook(On.Celeste.Payphone.orig_Update orig, Payphone self) {
@@ -41,10 +39,8 @@ private static void PayphoneHook(On.Celeste.Payphone.orig_Update orig, Payphone
4139
BloomPoint tempBloom = (BloomPoint) BloomField.GetValue(self);
4240
tempBloom.Visible = tempLight.Visible = !tempLight.Visible;
4341

44-
if(self.SceneAs<Level>().Session.GetFlag("lightsDisabled")) {
45-
BloomField.SetValue(self, tempBloom);
46-
LightField.SetValue(self, tempLight);
47-
}
42+
BloomField.SetValue(self, tempBloom);
43+
LightField.SetValue(self, tempLight);
4844
}
4945

5046
private static void LevelLoadHandler(Level loadedLevel, Player.IntroTypes playerIntro, bool isFromLoader) {
@@ -93,6 +89,7 @@ private static void EnableLightRender() {
9389
On.Celeste.LightingRenderer.BeforeRender -= LightHook;
9490
On.Celeste.BloomRenderer.Apply -= BloomRendererHook;
9591
On.Celeste.Level.TransitionTo -= TransitionHook;
92+
On.Celeste.Payphone.Update -= PayphoneHook;
9693
HooksEnabled = false;
9794
}
9895

@@ -103,6 +100,7 @@ private static void DisableLightRender() {
103100
On.Celeste.LightingRenderer.BeforeRender += LightHook;
104101
On.Celeste.BloomRenderer.Apply += BloomRendererHook;
105102
On.Celeste.Level.TransitionTo += TransitionHook;
103+
On.Celeste.Payphone.Update += PayphoneHook;
106104
HooksEnabled = true;
107105
}
108106

0 commit comments

Comments
 (0)