I can't really make you the Nightmare spell but I can help you. And obviously, once you've done it, it will wake the unit. Let's take it step by step, though i think I told you before how to do it.
First, take as a base spell Storm Bolt. Change the duration for all the levels, for both Hero and Unit to 0. Change the damage for each level to 250/350/450 ("/" separates the levels so 250 for first level, 350 for second level and 450 for third level). Change the icon for both research and normal if you want, change the description as you want. Erase all the buffs as well and change the projectile if you want, like... the one from Orb of Annihilation (Search for Item - Orb of Annihilation at Spells models... I need to open editor to get it for you). Ok, let's get to the triggers. You only need one trigger in my opinion. Let's get going...
Nighmare
Events - Unit - A unit begins casting an ability
Conditions - (Ability being cast) equal to Nightmare [Make the spell, call it nightmare and you may select it...]
Actions - If, Then - Else (Multiple Actions)
IF - (((Target unit of Ability being cast) is sleeping) equal to true) or (((Target unit of Ability being cast) has buff Sleep) equal to true))
THEN - (Do Nothing)
ELSE - Unit - Order (Casting Unit) to Stop
- Play (Casting Unit)'s Stand animation
- Game - Display to (All players matching ((Owner of (Casting Unit)) equal to (Matching Player))) the text: |cffffcc00Unit is not sleeping.|r
- Sound - Play Error <gen>
Ok, this should be it. I forgot to mention that to get Error sound you need to go to Sound Editor and get the sound. You may find it at Sound - Interface - Error.wav. That's all you need for your Nightmare spell.
For the hero skill, explain it more accurately. I don't get what you really want from it.
Lag... What is this skill actually supposed to do? I really don't get it... Is it supposed to keep the target invulnerable for 60/70/80 seconds or keep the damage taken by it for 60/70/80 seconds and then apply it all?? Hmm... I may find a way to do this but I don't promise anything.