функцию, срабатывающую при повышении уровня можно поменять вот таким образом, т.к. GetGameVar возвращает не совсем то, что вы хотите)
function HeroLevelSaveF()
SetGameVar("LevR", ceil(GetHeroLevel('Raelag')); --Увеличиваем на 1 переменную с уровнем героя
print("Установили что LevR это Сет Гейм Вар");
end
кроме того, огненный шар является не таргетным, а площадным спеллом, поэтому кастовать его надо по-другому:
for i, creature in GetDefenderCreatures() do
local x, y = pos(creature)
startThread(UnitCastAreaSpell, GetAttackerHero(), 5, x, y);
print("Кастуем шар");
end