There's no way to simplify coding, everything is always all over the place, it's like procedural programming all over again!
Not sure what you mean about procedural coding, but I disagree about everything being all over the place and no way to simplify. If you use lots of groups, sub-groups and sub-events well, I find it to be extremely organized, as an entire section of code can be described in a group name. It makes it very easy to find what you're looking for. It's how I manage working with a 5000-event event sheet in loot pursuit - and things are plenty easy to find, as long as I actually place them somewhere logically labeled.
We cannot make our custom ACEs with construct events, and that makes artificial intelligence in c2 games almost impossible - you can prototype the pieces, but you can't assemble them - it would be nice to have something like [if I have a shot at defeating the player] then [chase player], with all the complexities (that I coded myself) hidden away.
You can actually do A.I. with events as they are, and it's not almost impossible at all. You could do what you described above by combining some of the player's character's stats into a 'power level' variable that could be compared to the enemy power level, and to fight or run depending.
I haven't done any 'real' coding, but I'm guessing it's a lot different from how you're used to doing it though.
In addition, object-oriented concepts such as an object composed of multiple sub-objects each with their responsibilities
Containers are made for exactly that. :) They're not in C2 yet though.
code reusability, design patterns and other things feel very weird (and that's not just with construct).
Design patterns? I'm not quite sure what you mean by that?