This worked a lot better for me. Each ability/spell has its own small piece of code, easily maintained. Thought, as you have already mentioned, adding or modifying stuff in your core game could result in some refactoring. To ease the effect, I would recommend to add some utility/proxy funcitons which encapsulte some often used functionality. With some proper design, changed in your core game will hopefully target only these utility functions, reducing the refactoring efforts a lot.
That seems the best way to go. I'll continue on that route and will post my findings once I get something done.
Thanks a lot for taking the time to reply.