Shipping calculations

I have a problem with shipping costs… 

I have different shipping costs for different categories. (max price = example 100$)

Example category CHOCOLATES:

1… chocolate - 10 $

2… chocolate - 20 $

3… chocolate - 30 $

… etc…

More than 10 chocolates  MAX price  (and max is 100$)

Example category bulldozer:

1… bulldozer - 30  2... bulldozer - 80 
More than 2 bulldozers MAX price (and max price is 100$)

I can create different types of Shipping costs for both categories

  for „Chocolate shipping type“  I can block category bulldozers

  for „Bulldozers shipping type“  I can block category chocolate

everything is ok if I buy only bulldozers or only chocolates but for both in one cart … all types are not available (because of blockade settings)

So how can I set rules to get :
 

Cart example 1:

2 x chocolate : 20$
1 x bulldoger:  30$

Sum should be 50 $
 

Cart example 2:

5 x chocolate : 50$
2 x bulldoger:  80$

Sum should be 100 $   (because max is reached)… 

Any ideas… ? is this possible without custom plugin ? and overrides in shipping costs…