You would use a custom damage system. I haven't touched triggers in so long but back in my day I used Weep's because it was super simple to understand and use, and because it was GUI. Here it is
http://www.hiveworkshop.com/forums/spells-569/gui-friendly-damage-detection-v1-2-1-a-149098/ . What it does is let you have an Event : A unit takes damage (including 0), pretty much. Also let's you modify this incoming damage. So how to exploit the possibilities of this? Well, now you can shoot a 0 damage shockwave and use this trigger to detect the "0" damage it does and modify it to do something like 5X INT damage.
Bribe's is most popular for GUI at least back in my day:
http://www.hiveworkshop.com/forums/spells-569/gui-damage-engine-v2-2-1-0-a-201016/ . It's not as simple and quick but the functionality and efficiency is greater. It's still very simple to use once you get the hang of it. I haven't tried this but it is better recommended I hear. My explanation below is based on Weep's system though.
For these two systems, to code a spell doing damage based on stat, you either 1) code the damage with the deal damage line (so like, your own custom spell), which means you don't need any damage system at all. Or if you plan using a wc3 spell do damage based on stats like Shockwave for example, then you do need damage system and you do 2) create a dummy unit at your caster location when unit cast the spell (if you don't know what that is, refer to here - a dummy unit is a unit with no model file with "locust" ability to become unclickable, so basically an undetectable unit that can cast the shockwave for u. The hero's shockwave spell will be a spell that does nothing except show icon, tooltip, cast range, mana cost.. -- usually based on "channel" ability). Now you order this dummy unit to cast the actual shockwave instead of your main hero and it will look like its coming from ur hero (make sure this shockwave is set to 0 damage). then you have a new trigger - event: detect damage (these systems can detect 0 dmg), with condition that it is this specific dummy unit. Then you set the damage to casting hero stat (which u save in integer variable). So in total you have 2 triggers, one to detect the spell casting which create the dummy to tell it to cast shockwave, and one to detect the 0 damage it does to modify it based on hero stat. Now why this roundabout method and not just have hero cast? Well, you would have to use cokemonkey's Damage system if you want to get around this since it can detect physical vs spell damage based on "runed bracers" skill but it's much more complicated and not worth your trouble for a beginner. Basically the dummy has to cast it because this lets you differentiate from hero physical damage and spell damage if you catch my drift. You know that all damage this dummy does is due to shockwave spell damage. If I lost you anywhere in this pile of text, please tell me
, good luck. -- So I personally recommend the first system - Weep's -- is easy to implement and simple. Poor functionalities but it's a great place to start!
And if you feel comfortable with triggers or perhaps sometime in the future take a look at this: it is still simple to use and has more functionality and it's really neat -
http://www.hiveworkshop.com/forums/spells-569/gui-damage-modification-system-1-01-a-227662/