You can easily do this with Special Promotions Extension.
It allows to create promotions of types “Buy X and get 10% discount” and “Buy X and Y and get discount on total”. In ‘conditions’ tab you specify which categories the rule should apply.
What’s more the module allows not to apply discounts to products with special price.
Feel free to contact directly our support team at http://amasty.com/support.html to get the help with creating the rules you need.
See detailed user guide, demo here http://amasty.com/special-promotions.html