diff --git a/src/object_cmd.cpp b/src/object_cmd.cpp --- a/src/object_cmd.cpp +++ b/src/object_cmd.cpp @@ -205,7 +205,8 @@ CommandCost CmdBuildObject(TileIndex til { CommandCost cost(EXPENSES_PROPERTY); - ObjectType type = (ObjectType)GB(p1, 0, 8); + ObjectType type = (ObjectType)GB(p1, 0, 16); + if (type >= NUM_OBJECTS) return CMD_ERROR; uint8 view = GB(p2, 0, 2); const ObjectSpec *spec = ObjectSpec::Get(type); if (!spec->IsAvailable()) return CMD_ERROR; diff --git a/src/object_type.h b/src/object_type.h --- a/src/object_type.h +++ b/src/object_type.h @@ -24,7 +24,7 @@ static const ObjectType OBJECT_HQ static const ObjectType NUM_OBJECTS_PER_GRF = 255; ///< Number of supported objects per NewGRF; limited to 255 to allow extending Action3 with an extended byte later on. static const ObjectType NEW_OBJECT_OFFSET = 5; ///< Offset for new objects -static const ObjectType NUM_OBJECTS = 256; ///< Number of supported objects overall +static const ObjectType NUM_OBJECTS = 64000; ///< Number of supported objects overall static const ObjectType INVALID_OBJECT_TYPE = 0xFFFF; ///< An invalid object /** Unique identifier for an object. */