i use a bytecode script language a little like the one you descripe. it's based upon a VERY few assemblylike instructions like MOVe, ADD, SUBstract, DiSTance, MOVLiteral accepting up to 4 arguments a function.

i'm solving it by giving a scripttoken to each of the objects i want to be scripted. then in the scriptmanager i run the script that the scripttoken descripes for each object scripted. the script will ask for registered variables which are stored by name,(pointer) and index in an array by the scriptmanager. the script (which is composed of numbers only refering to vars by index) is just run through a parser which parses:

IFNZ character.CanSeeEnemy
MOV character.HeadTo, character.CanSeeEnemy
END

to

5,3
1,2,3
0

that's how i solve it.. how userfriendly it s i don't know but it's lightning fast and i can handle it just fine