The water flooding was done via a func_water_analog, the moon falling was done with a train in the skybox (the impact with env_shake, particle effects and an ambient_generic).
If you're refering to how I triggered the events at the start of each round I used a logic_case triggered on a new round (via a logic_auto) to select an event to be played (PickRandom). You could combine it with a logic_timer to have a random event triggered every so often.
I hope that's answered all your questions, but if you have any more ask away (I didn't realise anybody still played towertop)!