Where was I? I don't remember. I seem to vaguely remember something to do with special effects, and the current build of the game features a number of non-moving additively blended particles hanging in mid air in a small cluster, so I am going to assume that I was working on the special effects aspects, and go from there.
Special effects, then... it's always been a bit of a thorn in my side. I have all these ideas (mostly blatantly ripped off from other games of course) for kick-ass lights, bangs and explosions, but I have only the vaguest idea how best to implement an extensible special effects 'engine' if you will, a framework that is flexible and easily extensible and can easily handle chain lightning and meteor drops with equal facility. 3D special effects merely compounds the problem, since there are so vastly many more ways of implementing a given effect. How to generalize any special effect down into a descriptive set of data, and abstract the system such that any given effect can be produced, is where I'm running into problems now.
I can spawn particle clouds with ease; particle effects are no mystery to me. I can do lightning bolts, and flashes, and explosions, and laser beams, and halos, and so on. But tying them all together into a common framework is very frustrating. I reckon this framework will go through as many iterations as the terrain systems have before I am happy with it.
Anyway, I'm back and hopefully I can get back into business.
As for your effects framework, I have one word "Components". Create a component-based effects system, so each effect has a series of other effects, each of which are components. Your effect component would have extra components to dictate how it's rendered, how it affects the physical world, etc.
Components have either a messaging interface which can be used to generically set and query properties (and also call functions), or even just an integral propertyset which can be iterated over (useful for building a GUI on top of). Your effects components could be proxies for calling scripts (such as Lua or GameMonkey), allowing you to specify and create effects in script.