you have to create a 'shake-system' with a 'shake queue'.
each new shake get a start timer, a dauration and a magnitude.
on each new shake you have to set the shake queue* (and probably adjust the active shake to the new values ) to your needs.
on end of a shake you have the set the next (remaining part) shake in the queue - if any.
*) how you set the queued (future) shakes depends on your needs (e.g. higher magnitude removes lower, short time different magnitude creates a new part shake of the actual shake)