Fix: ScriptTile::PlantTreeRectangle does not check that the end tile is in bounds. (#13004)
If the starting tile is near the edge of the map, the width and height could overflow the map boundary. In some cases this might result in a different area being planted than expected.
This commit is contained in:
@@ -297,7 +297,8 @@
|
||||
EnforcePrecondition(false, ::IsValidTile(tile));
|
||||
EnforcePrecondition(false, width >= 1 && width <= 20);
|
||||
EnforcePrecondition(false, height >= 1 && height <= 20);
|
||||
TileIndex end_tile = tile + ::TileDiffXY(width - 1, height - 1);
|
||||
TileIndex end_tile = TileAddWrap(tile, width - 1, height - 1);
|
||||
EnforcePrecondition(false, ::IsValidTile(end_tile));
|
||||
|
||||
return ScriptObject::Command<CMD_PLANT_TREE>::Do(tile, end_tile, TREE_INVALID, false);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user