I usually tip very well IMO. If the service is even passable I give 15-18%. If the service is pretty good, I give 20%. If I never have to ask for a refill, don't have a complaint about my order being messed up, and the server has a polite demeanor, I'll exceed 20%. In extreme cases of service above and beyond the call of duty I'll go 25-30%, just because I know those few extra bucks probably mean more to the person waiting on my and my group than they mean to me.
When it comes to a discount though, it does somewhat depend on why I have the discount. If it is a restaurant special, I'll probably tip 5-8% higher, but based on my actual bill. If it is something my server does to get me the discount, I'll generally give them 50-70% of the discount, plus their 20%.
For example, one time some friends and I were having a great time at a tequila bar. Our bill should've been north of $300 once we left (we put in HOURS of hard labor, lol). We were bantering with our server, having a great time, and she was busting her butt to keep us happy. Before her shift ended we told her we wanted to cash out with her, to make sure she earned the tip she deserved. She obliged, and brought us a bill for less than 50% of what it should've been. I double checked with her to make sure there wasn't an error. Her reply was "you all have been a blast to wait on, your bill is correct" with a wink. I tipped her about 70%, which was still a touch less than what I thought the bill rightfully should've been.
She made more than she would've with a good tip, and I paid less than I would've. Win-win.
