After writing a lot of tools for game designers, I've found a simple rule: if a system you're creating is Turing complete, throw it out and just give them a normal scripting language.<p>Rationale is simple: game designers will ALWAYS find ways to use the system in the most insanely complicated way, and it's far easier to debug and fix things in a normal programming language rather than another system full of ad-hoc conditions, weird triggers, global variables and other complexity that starts small but always snowballs throughout development.