示例#1
0
        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));
            }
        }