Raindrops are falling on my... glasses?
JavaScript (ES6), 269 267 265 bytes



document.write('&lt;pre id=o&gt;')
a=[...` _8_8_8
| 9 /__\\  9|
| 9/ 4\\ 9|
| 8/ 6\\ 8|
\\_7/ 8\\_7/`.replace(/.\d/g,s=&gt;s[0].repeat(s[1]))]
s=" .oO@@"
g=_=&gt;o.innerHTML=a.join``
f=(i=s.indexOf(a[j=Math.random()*a.length|0])+1)=&gt;i?g(a[j]=s[i]):f()
g()
setInterval(f,1e3)




Edit: Saved 2 4 bytes thanks to @Shaggy.