Add an out of bounds check.

This commit is contained in:
Matthias Mailänder
2020-05-01 17:31:44 +02:00
committed by Pavel Penev
parent 70babb4067
commit 42256bc262

View File

@@ -50,13 +50,16 @@ namespace OpenRA.Mods.Common.Traits
void ITick.Tick(Actor self) void ITick.Tick(Actor self)
{ {
var loc = self.Location; var cell = self.Location;
if (!self.World.Map.Contains(cell))
return;
if (conditionManager == null) if (conditionManager == null)
return; return;
// The terrain type may change between ticks without the actor moving // The terrain type may change between ticks without the actor moving
var currentTerrain = loc.Layer == 0 ? self.World.Map.GetTerrainInfo(loc).Type : var currentTerrain = cell.Layer == 0 ? self.World.Map.GetTerrainInfo(cell).Type :
tileSet[self.World.GetCustomMovementLayers()[loc.Layer].GetTerrainIndex(loc)].Type; tileSet[self.World.GetCustomMovementLayers()[cell.Layer].GetTerrainIndex(cell)].Type;
var wantsGranted = info.TerrainTypes.Contains(currentTerrain); var wantsGranted = info.TerrainTypes.Contains(currentTerrain);
if (currentTerrain != cachedTerrain) if (currentTerrain != cachedTerrain)