1. The start() function seems to need to start with a capital letter - Start(). Lua is case-sensitive.
2. Mana might not be given to the hero immediately; you can reliably wait using this construct:
SetUnitManaPoints(GetAttackerHero(), 100);
repeat sleep() until(GetUnitManaPoints(GetAttackerHero()) == 100);
3. Spell casting functions may fail in some cases, causing the script to crash at that point. There is a safer way to run them through a separate thread:
startThread(UnitCastGlobalSpell, GetAttackerHero(), 212);
And also, after the spell casting functions and before restoring the previous mana, it is better to put sleep(1), so that the mana has time to be deducted before it is restored.