void Repeat(object oPC) { location lPC= GetLocation(oPC); int nEffectNumber = Random(6); switch (nEffectNumber) { case 0: ApplyEffectAtLocation(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_DISPEL), lPC); break; case 1: ApplyEffectAtLocation(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_ELECTRIC_EXPLOSION), lPC); break; case 2: ApplyEffectAtLocation(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_MYSTICAL_EXPLOSION), lPC); break; case 3: ApplyEffectAtLocation(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_TORNADO), lPC); break; case 4: ApplyEffectAtLocation(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_MASS_MIND_AFFECTING), lPC); break; case 5: ApplyEffectAtLocation(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_HOWL_ODD), lPC); break; } int nPC = GetLocalInt(oPC,"rift_n"); if(nPC==1) { DelayCommand(30.0, Repeat(oPC)); } else return; } void main() { object oPC = GetEnteringObject(); if (GetIsDM(oPC)) return; SetLocalInt(oPC,"rift_n",1); Repeat(oPC); }