Now you're seeing the project like I do.
Most of the hard things are done. Roughly five remain. These are the three I can most readily remember:
1) Proper template instantiation for accurate type resolution on template parameter typed members (Working on this one right now).
2) Switch statement optimization/implementation (I need to be able to get the integer value of constants).
3) Proper argument type resolution (This may never actually happen).
From there, we have other some milestones that I will more than likely be the one to do:
1) Proper local modularization (See Ism's alarm code; I described to her how to do once what the compiler would soon be streamlining).
2) Comment based output sectioning for compiler feedback parsing (Meaning if GCC errors from the user's object headers, I just read up to the nearest comment to find out what object/script the error was in).
3) Depth. I told everyone how to do this, but I know I'll be the one to do it when I feel like it. It's not difficult at all.
4) Design mode (Build Mode from R3). You've probably never heard of it, but it was ENIGMA's trump card (I'm sort of working on it now).
Additionally, r9k is working on a polygon collision engine, and Ism is doing what I was hoping someone would do, being to take my collision_bbox_rect and do some bbox-based collision functions to get the system up and running in general.
Once that's done, though, I can pretty much stamp a big "DONE" on ENIGMA as far as being a competent development application goes, because the rest of the GM library is trivia and nonsense.
And, eh, move your draw_primitive_set_line_width(20); above your draw_primitive_begin().
Also, I was thinking about adding an option for scripts (embed in all, use with(), automatic). For now, I embed them all because memory is cheap, but not so much the extra time to dereference a non-this. (ENIGMA's with is actually pretty damn efficient, but...)