Really, the only way to have all the features is to implement multiple interfaces. Accessible and powerful are often two ends of a spectrum. The easiest way to do this is to implement a powerful system, that has an additional interface to allow beginners to interact with the system in a intuitive way.
Allowing for a system that allows beginners to program visually, perhaps something similar to the Lego Mindstorms programming tools:

Where there are drag/drop components. The components have inputs and outputs. Components can be simple things like AND
, or OR
gates, or more complex like a test for nearby enemies.
Ideally the visual representation should be compiling a written language script in the background. This offers a powerful tool for learning the language too. If a beginner can "write" their program visually, then read the code it produces they're far more likely to understand it and be able to modify the code produced. Eventually being able to write more powerful code than the visual tools alone allow. This fulfills the requirement of easing users into programming.
The backbone of the system, of course, is a written language. The visual tools are just to give users a fast way to program something simple, and allow for beginners to get started.
The written language allows for advanced users to do advanced things. And you can even allow users to create their own components, by making custom scripts. Then they can re-use components they made in a quick and easy interface for fast programming.
Good luck! Sounds like a fun project.