Try using BotLoader and running the RaidBot. The RaidBot doesn't start the rotation until you initiate combat. This will prevent the issues you're having with engaging combat before you're ready. If that doesn't work, you should use F9 to pause the rotation and use your CC, then change targets and hit F9 again.
The syntax you're looking for is something like this:
This will cast the spell if both X and Y are true, or if Z is true. You could also useCode:Spell.Cast("Spell", ret => (X && Y) || Z),
This will cast the spell if X is true and either Y or Z are true.Code:Spell.Cast("Spell", ret => X && (Y || Z)),
Finally, I just double-checked, and "Asleep (Mental)" is already in the crowd controlled section. I forgot to put in the PBAoE section, so I fixed that. What problem were you seeing with that exactly? Discharge and Lacerate are both Single-Target spells, so the fix there is just don't target the CC'd character.
Thanks for the syntax help. Discharge is not single target for Darkness spec because we are using "Dark Charge" for tanking. When Dark Charge is active (It is a stance like warrior shi form etc, so is always active) Discharge is aoe. For the DPS specs of assassin when using surging charge or lighting charge, Discharge is single target.