In short: OneCode: Stackable Discounts handles trickier offers with a few simple patterns. Set tier thresholds on the cart before discounts, use a percentage for every currency, let the customer add the gift, target the collections you want, and use two discount types for either/or rules.
Higher spend tiers
For "20% off, then 30% off once the cart reaches $300", give each tier its own discount type with a Cart Subtotal condition. Cart Subtotal and Cart Total measure the cart before the code's own discount, so set each threshold on the cart value before discounts. Raise the number if you want customers to spend more before the higher tier. See Spend more, save more: spending tiers.
The same saving in every currency
Use a percentage. 10% off is the same saving in every currency. Fixed amounts are entered in your store's currency and Shopify converts them at its exchange rate, so $10 off shows as about €9.23 off in EUR. See Using OneCode with multiple currencies.
Changing a code to an automatic discount, or back
The method is set when you first save. To switch, create a new discount with the other method, then delete the old one.
Free gift with purchase
Add a 100% Product Discount on the gift product with a Quantity Limit of 1, and a condition such as Cart Subtotal at least $100. The customer adds the gift to their cart and the discount makes it free, so mention the gift on your product pages or announcement bar. The gift's own price counts toward the subtotal, so add it to the threshold (for example 120 for a $20 gift). See Free gift with purchase.
Everything except one collection
Target Specific Collections and pick every collection you want discounted. Leave out sale items and subscriptions with a sale item rule or exclusions.
Either/or rules
For "VIP customers or carts over $100", add two identical discount types, one with each condition. When a cart meets both, only the better one applies, so the customer never gets it twice.
More tips
Use Product In Cart as a Global Condition, or as a condition on a shipping discount.
To leave a group of customers out, use Customer Tag with Is not one of.
To cap how many items get the discount, use a Quantity Limit. It counts per order.
