Although we've had a new scripting system using a real scripting language for a year or two now, most of our scripts still use our old ad-hoc scripting... thing. It's pretty terrible all around: scripts are retained as plain strings, copied, re-parsed, and modified in place to resolve variables (well, value-returning functions, there are no real variables) to their values -- textually -- before any logic happens, every single time an event with scripted behavior associated with it occurs. Not to mention that it does a lot of usually-unnecessary processing besides -- some of it even if there is nothing in the script associated with the event. It's basically an anti-programming language, and all the re-parsing, repeated allocations, and handling everything as text makes it about as slow as it possibly could be.
This is particularly bad for some of the later-made raid zones. The original scripting system scales poorly -- longer, more complex scripts take exponentially longer to process. This isn't helped by it not having reliable nesting of conditionals -- meaning complex scripts are also extremely repetitive out of necessity.
All the old scripts should probably be converted to the new language. This could probably be done, but it's not a very interesting project. The old system has a lot of odd constructions, quirks, and one-off functions that would be a pain to have to port over or write around. ("Variables" being pre-determined at the start of the event and therefore not updating in real time is just the tip of the iceberg.)
...