Flame_Phoenix, you got a problem with blizzard's retarded shadowing thing.
In scope DarkLightning you got something like:
private boolexpr b
method SetProjectile takes nothing returns nothing
local real b=
Somehow blizzard's retarder checker, then assumes all your instances of the global b are real, so whenever you use the boolexpr b, you get the bug.
This is so freakingly stupid. I think my solution to this would be to add different prefixes to globals and locals.