I finished that in about 30 minutes of work.
However, there were a few problems. First, the map got corrupted whenever a plant became a baby plant (for testing purposes I changed the order in which the plants grow, from adult to baby plants).
Then, the baby plants became adult plants whenever a seed of the same species germinated.
Finally, when plants associated with a resource changed to some other resource, the other resource was not being used, but the previous one was.
So I had to spend about 5 hours debugging, and solving all those problems, which were not related.
The plants not becoming another resource was relatively easy, I was using the ID of an object after that ID changed.
The plants becoming adult when a seed of their type germinated was relatively easy as well, but tricky. It turned out that I set the "size" value in a definition of a 3d object, rather than in the instantiated version of the object (we are talking C here, not C++, so it was about structures, not objects as in OOP).
The map corruption problem, on the other hand, was very nasty, and took most of the time, about 2 hours. The problem was that while replacing a 3d object with another, some old values were not copied properly, due to using a pointer to an object that was erased.
There was also a small modification I made with the vegetation becoming a resource by default, based on the object type, rather by using the flags sent by the server. While this is SLIGTLY less flexible than the previous way, it is far better from the bandwidth point of view, and makes my life easier.
This change also took a little more than expected, due to some other bugs that had to do with the CVS acting up, and using a previous version of a file which I fixed a while ago.