Yes, it should most likely be self.
Umm, no.
I tried both, and both give almost identical errors,
either:
[ Trigger: enrico receive ring, VNum 7528. dg_cast: target not found (dg_cast 'heal' %self%) ]or
[ Trigger: enrico receive ring, VNum 7528. dg_cast: target not found (dg_cast 'heal' self) ]
Also it seems all spells using DG_cast work very erratically, and mostly not at all.
I am not so sure about DG_affect either.
I recently tried to forcibly put a player to sleep for a few minutes with a script, trying both DG_cast, DG_affect and delay. Neither worked. In the end we had to set up the script with a variable to get it work the intended way.
Plus that context still is bugged.
Is there really no one who could fix those issues? They affect a large number of quest scripts.
As it is two players cannot work on the same quest, and as far as I know context always worked fine in the past.