diff --git a/OpenRA.Game/Graphics/SpriteCache.cs b/OpenRA.Game/Graphics/SpriteCache.cs index 24e5f8cf77b4..463494de8934 100644 --- a/OpenRA.Game/Graphics/SpriteCache.cs +++ b/OpenRA.Game/Graphics/SpriteCache.cs @@ -93,9 +93,16 @@ public void LoadReservations(ModData modData) { var resolved = new Sprite[loadedFrames.Length]; resolvedSprites[token] = resolved; - var frames = rs.Frames ?? Enumerable.Range(0, loadedFrames.Length); + if (rs.Frames != null) + { + var frames = loadedFrames.Length; + foreach (var i in rs.Frames) + if (i >= frames) + throw new InvalidOperationException($"{rs.Location}: {filename} does not contain frames: " + + $"{string.Join(',', rs.Frames.Where(f => f >= frames))}"); + } - foreach (var i in frames) + foreach (var i in rs.Frames ?? Enumerable.Range(0, loadedFrames.Length)) { var frame = loadedFrames[i]; if (rs.AdjustFrame != null)