Hmm, I suppose I should have passed the struct to the response function as an argument instead of a global variable. I'd like to maintain backwards compatibility so I can't change that, unless I add another function interface and another set of event register functions on top of it all.
That extra effect event for morph spells could actually be a big issue if the unit is channeling a spell at the time it unmorphs. I really should fix that regardless of how obscure it is.
For now, though, here's an updated version that uses the new 1.24 spell target X/Y natives instead of GetSpellTargetLoc.
Edit: Okay, I also fixed the issue with the extra effect event, now it is ignored. Thanks for reporting it.