So, I present: Slowly Exploding Durations. When a spell is cast or potion is drunk:
- Roll for duration (default is 1d6.)
- If the roll is less than the maximum, the effect fades after that many time units (default is rounds.)
- Otherwise, the effect lasts the maximum number of time units, and then you roll 1d6, with a result less than 6 meaning the effect ends.
- If the d6 roll in Step 3 is 6, the duration explodes; use the next time unit on the scale. Repeat from Step 1.
The time unit scale, and the appropriate base duration roll, is:
- 1d6 rounds
- 1d6 turns
- 2d6 hours
- 1d6 days
- 1d6 weeks
- 2d6 months
- 1d6 years (or decades, centuries, millennia)
Each time you roll the maximum possible for a given duration, wait until that duration expires and make the 1d6 check to see if the duration explodes to the next higher time unit. The difference between this and ordinary exploding dice mechanics is that you put off the additional rolls until they actually matter. Why roll a whole bunch of dice to determine that a potion will last for seven months, only to have the effect be canceled by Dispel Magic or the death of the potion-drinker after just a few rounds?