To avoid special cases, this probably should be done in the Script call effect executor. You can pass to it the EffectsSystem and the VariablesManager.