I'm assuming V1 rain flooded, because you made rain event directly create water over tiles?
I suggest to implement tile variables named "GroundHumidity", "AirHumidity", "GroundTemperature",
"AirTemperature", "Evaporation" and minimum and maximum saturation constants of these for
different ground types (GrndHumSatMax, AirTempSatMin, etc...)
When the rain event is called, the server should (pseudo)randomly choose the duration, area coverage
and thickness of rain.
Duration determines the time the rain lasts and the ground tiles can soak up water.
Area coverage determines the land area the rain event is taking place over and thickness determines
how much water is dropped in one timeframe (this should have visual indications)
When it starts to rain, server begins to increase the ground humidity variables of affected tiles.
Then, as determined by ground tile constants Min and Max, the tile begins to "soak up" rainfall, meaning
the GroundHumidity variable is decreased. At the same time, the ground tile local saturation variable
begins to increase. When the local saturation or the GroundHumidity variable reaches the constant
GrndHumSatMax as determined by the ground type (dirt, pavement, sand, etc.), the tile is fully
saturated and a small puddle forms.
Then, when rainfall continues, the local sat. var continues to increase. When it reaches, say, 120%,
a medium sized puddle forms. Large puddle at 140% and full flood at 160%.
All at the same time, the Evaporation strength is determined by temperature, land slope and adjacent
tile saturations. If there is tile A with 80% saturation and next to it is tile B with 20% sat., then after
some time X, both of their saturation as by entropy law ends up 50%. Actually, it will probably be less
than that, because temperature affects air evaporation and land slope causes runoff.
All this together creates a really dynamic world and should prevent flat-out flooding, if evaporation
factors are implemented properly, while still allowing temporary flooding over flat or basin areas
and allowing players to steer water flow.