Review
1) call SetUnitInvulnerable(udg_Harvester, true)
->
call UnitAddAbility(udg_Harvester,'Aloc')
2)you should put prefixes
3)Change FB_TempUnit[2]'s size to (FB_Fireball_Scale[FB_Level]%, 100.00%, 100.00%) of its original size
Turn the other 100 to 0
4)Distance of the offset
TempLoc offset by 50.00 towards FB_Real[2] degrees)
should be configurable at least
5)If you are creating unit on TempLoc2,use this X/Y
[jass=]
set x = GetSpellTargetX() + 50 * Cos(udg_FB_Real[2] * bj_DEGTORAD)
set y = GetSpellTargetX() + 50 * Sin(udg_FB_Real[2] * bj_DEGTORAD)[/code]
so that you wont be using locs
6)Custom script: set udg_FB_Real[5] = GetUnitX(udg_FB_TempUnit[1]) + udg_FB_Real[2] * udg_FB_Real[3]
Custom script: set udg_FB_Real[6] = GetUnitY(udg_FB_TempUnit[1]) + udg_FB_Real[2] * udg_FB_Real[4]
-------- --------------------------- --------
-------- Move the dummy --------
-------- --------------------------- --------
Custom script: call SetUnitX(udg_FB_TempUnit[1], udg_FB_Real[5])
Custom script: call SetUnitY(udg_FB_TempUnit[1], udg_FB_Real[6])
You should put the coords directly,you dont need to cache the coordinates
7)Again,dont use locations in loop.
Use the GetUnitX/Y and GetUnitX/Y projection instead(because you are using GetLocationX/Y w/c is ugly)
8) it would be better if you start using formulas,because arrays are slow
9)Real arrays on your variables should have understandable names.
Needs Fix