Проблему решил таким образом:
Код:
void Spell::EffectForceCast(SpellEffectIndex eff_idx)
...
- unitTarget->CastSpell(unitTarget, spellInfo, true, NULL, NULL, m_originalCasterGUID);
+ unitTarget->CastSpell(unitTarget, spellInfo, true, NULL, NULL, m_originalCasterGUID, m_spellInfo);
Для триггерных спеллов как раз и применяется такой прием, т.к. именно при таком касте реагенты забираются.
Только все равно интересно, почему кастует именно таргет на таргет, а не кастер на таргет.