public override void Run(RoleBase caster, Space space, MagicArgs args)
 {
     int positionX = (int)args.Position.X, positionY = (int)args.Position.Y;
     int destinationX = (int)args.Destination.X, destinationY = (int)args.Destination.Y;
     int radius = (int)(100 * caster.Scale);
     for (int i = 0; i < args.Number; i++) {
         CircleMagic magic = new CircleMagic();
         args.Position = new Point(ObjectBase.RandomSeed.Next(positionX - radius, positionX + radius), ObjectBase.RandomSeed.Next(positionY - radius, positionY + radius));
         args.Destination = new Point(ObjectBase.RandomSeed.Next(destinationX - radius, destinationX + radius), ObjectBase.RandomSeed.Next(destinationY - radius, destinationY + radius));
         magic.Run(caster, space, args);
     }
 }
 public override void Run(RoleBase caster, Space space, MagicArgs args)
 {
     int count = 0;
     int positionX = (int)args.Position.X, positionY = (int)args.Position.Y;
     int destinationX = (int)args.Destination.X, destinationY = (int)args.Destination.Y;
     int radius = (int)(130 * caster.Scale);
     EventHandler handler = null;
     DispatcherTimer timer = new DispatcherTimer() { Interval = TimeSpan.FromMilliseconds(150) };
     timer.Tick += handler = delegate {
         if (count == args.Number) {
             timer.Tick -= handler;
             timer.Stop();
         } else {
             CircleMagic magic = new CircleMagic();
             args.Position = new Point(ObjectBase.RandomSeed.Next(positionX - radius, positionX + radius), ObjectBase.RandomSeed.Next(positionY - radius, positionY + radius));
             args.Destination = new Point(ObjectBase.RandomSeed.Next(destinationX - radius, destinationX + radius), ObjectBase.RandomSeed.Next(destinationY - radius, destinationY + radius));
             magic.Run(caster, space, args);
             if (args.SpecialEffect == SpecialEffects.Shake) { space.Shake(Convert.ToInt32(args.Tag)); }
             count++;
         }
     };
     timer.Start();
 }