The climate can change from each tile, Just the landscape generator is very bad at doing this automatically. One of the eternal construction areas ....
I just went back and checked in a version from 2017 to make sure - if a strawberry plantation spawned in the desert, the fields would spawn around it in the desert. If you manipulated the climate manually to have one green tile in the desert and placed the strawberry plantation there, where it could naturally spawn, the fields would still spawn on desert tiles. It's only when fields on different levels were introduced that a climate check was added and this problem emerged. It has nothing to do with the landscape generator.
Having too much specific factories with fields will make this occurrence much more likely
Yes - the bug is more prevalent. So now paksets should remove the climate-bound fielded factories they included before the bug existed, when they worked as intended? I don't think so.
The bug can be removed simply by deleting line 1014 in simfab.cc where the climate is checked. That's not optimal, since it means fields may appear on the wrong climate near the factory, but that's what it did 3 years ago and did not cause complain by itself.
It can be changed to include the climate the factory stands on by extending the line to this:
(get_desc()->get_building()->is_allowed_climate(welt->get_climate(pos.get_2d()+koord(xoff,yoff))) || welt->get_climate(pos.get_2d()+koord(xoff,yoff))==welt->get_climate(pos.get_2d()) &&
Which should cause it to allow fields on all tiles which share the climate with the climate the factory is on (I suppose just the northwest corner of the factory, but that's good enough)
It could also do this:
(get_desc()->get_building()->is_allowed_climate(welt->get_climate(pos.get_2d()+koord(xoff,yoff))) || !get_desc()->get_building()->is_allowed_climate(welt->get_climate(pos.get_2d()))) &&
which should make it so if the factory isn't placed on an eligable climate, the result of the climate check for fields is irrelevant.
Can't test either of these right now, but it doesn't seem so hard that having the bug could be a better option.