A calculation will update whenever values in fields it references changes IF the fields are in the same record. So you will not need a script. Create calculation (result is text ) something like:
yourRadioButton = "Often" ; 1 ;
yourRadioButton = "Sometimes" ; 2 ;
YourRadioButton = "Rarely ; 3 ;
Is this what you are thinking that you need?
It ended up being... Case (Discount = "1 Monthly" ; (Quote_Gross_InOut /100)* 20 )
The other radio buttons will give different percentage discount. The calc field will be hidden and the discount will be subtracted from the Gross figure to produce a Nett figure.