Skip to content

Commit d2eecff

Browse files
committed
Added null checks to MoveBlockBarrier to avoid potential crashes
1 parent cd75124 commit d2eecff

File tree

1 file changed

+10
-0
lines changed

1 file changed

+10
-0
lines changed

Entities/MoveBlockBarrier.cs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,8 @@ public static void Unload() {
5454
}
5555

5656
static bool Platform_MoveHCollideSolids(On.Celeste.Platform.orig_MoveHCollideSolids orig, Platform self, float moveH, bool thruDashBlocks, Action<Vector2, Vector2, Platform> onCollide) {
57+
if (self.Scene == null || self.Scene.Tracker == null)
58+
return orig(self, moveH, thruDashBlocks, onCollide);
5759
bool barrierWasCollidable = self.Scene.Tracker.GetEntity<MoveBlockBarrier>()?.Collidable ?? false;
5860
if (self is MoveBlock) {
5961
foreach (Entity barrier in self.Scene.Tracker.GetEntities<MoveBlockBarrier>()) {
@@ -72,6 +74,8 @@ static bool Platform_MoveHCollideSolids(On.Celeste.Platform.orig_MoveHCollideSol
7274
}
7375

7476
static bool Platform_MoveVCollideSolids(On.Celeste.Platform.orig_MoveVCollideSolids orig, Platform self, float moveV, bool thruDashBlocks, Action<Vector2, Vector2, Platform> onCollide) {
77+
if (self.Scene == null || self.Scene.Tracker == null)
78+
return orig(self, moveV, thruDashBlocks, onCollide);
7579
bool barrierWasCollidable = self.Scene.Tracker.GetEntity<MoveBlockBarrier>()?.Collidable ?? false;
7680
if (self is MoveBlock) {
7781
foreach (Entity barrier in self.Scene.Tracker.GetEntities<MoveBlockBarrier>()) {
@@ -91,6 +95,8 @@ static bool Platform_MoveVCollideSolids(On.Celeste.Platform.orig_MoveVCollideSol
9195

9296

9397
static bool Actor_MoveHExact(On.Celeste.Actor.orig_MoveHExact orig, Actor self, int moveH, Collision onCollide, Solid pusher) {
98+
if (self.Scene == null || self.Scene.Tracker == null)
99+
return orig(self, moveH, onCollide, pusher);
94100
bool barrierWasCollidable = self.Scene.Tracker.GetEntity<MoveBlockBarrier>()?.Collidable ?? false;
95101
foreach (Entity barrier in self.Scene.Tracker.GetEntities<MoveBlockBarrier>()) {
96102
barrier.Collidable = false;
@@ -106,6 +112,8 @@ static bool Actor_MoveHExact(On.Celeste.Actor.orig_MoveHExact orig, Actor self,
106112
}
107113

108114
static bool Actor_MoveVExact(On.Celeste.Actor.orig_MoveVExact orig, Actor self, int moveV, Collision onCollide, Solid pusher) {
115+
if (self.Scene == null || self.Scene.Tracker == null)
116+
return orig(self, moveV, onCollide, pusher);
109117
bool barrierWasCollidable = self.Scene.Tracker.GetEntity<MoveBlockBarrier>()?.Collidable ?? false;
110118
foreach (Entity barrier in self.Scene.Tracker.GetEntities<MoveBlockBarrier>()) {
111119
barrier.Collidable = false;
@@ -122,6 +130,8 @@ static bool Actor_MoveVExact(On.Celeste.Actor.orig_MoveVExact orig, Actor self,
122130

123131
// Make the barrier temporarily collidable while checking MoveBlock collisions
124132
static bool MoveBlock_MoveCheck(On.Celeste.MoveBlock.orig_MoveCheck orig, MoveBlock self, Vector2 speed) {
133+
if (self.Scene == null || self.Scene.Tracker == null)
134+
return orig(self, speed);
125135
foreach (Entity barrier in self.Scene.Tracker.GetEntities<MoveBlockBarrier>()) {
126136
barrier.Collidable = true;
127137
}

0 commit comments

Comments
 (0)