Here's how I'm writing this - somewhat generic, with controls.
Add 'next throw time' variable to PM (nothing to save here - set to mintime initially).
Add SetThrowDelay(delay) method which sets the above var to Now+delay
Add CanThrowNow() method which checks above var vs Now
Add double to CoreAI for delay for Explosion potion (initially set to 2.1)
To base explosion potion, on throw (drink), check CoreAI value, if > 0, check CanThrowNow
On target potion, call SetThrowDelay(delay)
There's really three phases (?) of using a purple potion:
The way things work now is player doubleclicks and arms the potion. Timer begins (between 3 and 5 seconds) and player gets a targetting cursor.
Player targets at some point (if they are just targetting some non-moving object they'll throw it immediately - in PvP, they'll wait until 1 and target it, then they can use another right away). Then when the timer ends, the potion explodes and causes damage.
With this change, if a player targets right away (when timer is 2-5) there is no real change. They can click another one immediately.
However, if they wait until they get the timing right, there is a delay after.
It's also set up so that if we want to, we can add other thrown things to the delay. E.g. if we wanted to delay throws after getting smashed by a warhammer or after you drink a cure potion, we could do that.
I still have to test and make sure that it functions well.
Possible other changes/ideas:
1) make delay variable (e.g. random 1.7-3.1 seconds)
2) make delay dependent on stamina or dexterity (e.g. scales from 2.1 - 4.3)
3) make delay dependent on some other skill value or skill check (*shrug*)