Event Discount Based on Number of Participants Selecting Price Set Option
To my knowledge you have started in the right path and that would be the best way to process priceset - yes BuildAmount hook is used for handling the priceset amount 

Also I guess you should have already known about discount module if not please refer to the link below - If this works in anyway 

refer -  https://civicrm.org/extensions/cividiscount

All the best - I guess this helps !!!