Zack said that he is adding Dungeons, Magic, and some other stuff.
Zack, do you want my Magic system that I coded for my Medieval project? It supports the default energy system for Mana, Spell Cooldown, and Spell-Item Requirement.
These are the arguments for the function, it's fully capable of custom projectiles and OnCollision hooks. All you would need to do is change the Deso array to the DRPG array name.
function DMed_RegisterSpell(%name,%type,%lvl,%datablock,%mana,%cooldown,%specfunc,%cost,%costwhat,%costamt,%fxiD,%fxrepeattime)
DMed_RegisterSpell("Fireball",1,"1",DMed_Fireball,"100",2);