One of the nice things about not having variables is that right now the scripting engine is effectively equivalent to a
finite state machine, and FSMs have a lot of simple guarantees about them. For example, it is very easy to determine whether a finite state machine (with epsilon transitions) is looping infinitely without consuming input, which makes it easy to tell if a character script is incorrectly written. By adding variables, you get close to
Turing completeness, and it is literally impossible to detect (in general) an infinite loop in a Turing-complete model. This means a mistake in a script could cause the game engine to hang while it loops forever. Naturally, the game engine won't want to allow that, so it has to resort to some ad-hoc way of guessing if a script is looping forever and aborting it.
There's not a nice clean answer for that, so when do you give up on a script? The common approach is to wait until after it runs for a certain number of instructions without waiting for input from the player. So, let's say after 1000 instructions the script automatically aborts. What if the script would have completed on instruction 1017? So, you're tempted to say 1000 is too low and want to put it up around, say, 5000. Now, we're starting to run into a noticeable delay on slow computers. And whatever you set that number at, it's stuck forever (even if all the computers do get faster), because if you change it, old holds will start to act differently when "
broken"
scripts start to run properly under the new constraints (except they've never been tested...).
I'm not saying variables will never be put into DROD scripting. I just want people to know that what they're asking for has more issues than simply throwing it into the engine.
____________________________
I was charged with conspiracy to commit jay-walking, and accessory to changing lanes without signaling after the fact
.
++Adam H. Peterson