protected override void OnInvoke(BaseAspect aspect) { if (aspect == null || aspect.Deleted) { return; } if (aspect.PlayAttackAnimation()) { aspect.PlayAttackSound(); } aspect.PlaySound(1230); var delay = 500; for (var range = 4; range <= aspect.RangePerception; range++, delay += 500) { Timer.DelayCall( TimeSpan.FromMilliseconds(delay), loc => { SpellHelper.Turn(aspect, loc); if (aspect.PlayAttackAnimation()) { aspect.PlayAttackSound(); } CaveInBoulder(aspect, loc); }, aspect.Location.GetRandomPoint2D(range, range).GetSurfaceTop(aspect.Map)); } }