I'm looking in to the other issues, but the way the subevents are working is as intended. The parent event is not re-tested between subevents. This is the same as 'if' statements in programming languages. Something like
f (x is true)
{
if (y is true) do foo();
if (z is true) do bar();
}
The condition x is only tested once. If it's true, the entire block inside it is executed. If foo makes x false, it will still test z and run bar. C2 works the same way: if a parent event is true, all its subevents are executed, regardless of whether they make the parent event false or not.
(Note: 'every tick' has no effect, you may as well get rid of it, it's only there to save you having empty events)