Additional. About 'if statements'.
There are pure "IF statements' in c2. One is (by example) System > Compare two values. A pure logical condition that sets the condition true or not true. When true it runs its actions.
Most conditions are merely 'pick conditions'. Example Sprite > Compare Instance variable.
This will list all instances of a sprite that meet the condition in the 'picklist'. Actions addressed to that sprite will only work on its instances in the 'picklist'. This is not a pure 'IF statement', as you know them.
Bring two of those conditions in 1 event, and the second conditions will start picking from the 'picklist' made with the first condition. Example:
(Sprite) Is on screen <------ makes a picklist of all the instances of Sprite that are on screen.
(Sprite) Is overlapping another object (Tilemap) <---- Starts picking from the previous picklist, or, starts with all Sprites that are on screen and filters those that dont overlap TIlemap out.
At this point, the resulting picklist of the two conditions contains (besides the Tilemap) all instances of Sprite that are on screen AND overlap Tilemap. Actions addressed to Sprite will only work on those picked instances.
So, most conditions are pick conditions. There is one situation where they fall back to being a 'logical condition', or as you call it an 'IF statement'. And that is when the resulting picklist is empty. When the picklist is empty, the condition is untrue, and non of the actions will run.
All i wrote here is not really true, because still incomplete, it is the right direction in a nutshell.
Please read this, it will bring light in the darkness.