public static void EffectLine( Point3D start, Point3D end, Map map ) { if( start.Equals( end ) ) return; int difX = Math.Abs( start.X - end.X ); int difY = Math.Abs( start.Y - end.Y ); int x = start.X; int y = start.Y; int avgX = (int) Math.Round( difY != 0 ? difX / (double) difY : 0 ); int avgY = (int) Math.Round( difX != 0 ? difY / (double) difX : 0 ); while ( x != end.X && y != end.Y ) { Point3D p = new Point3D( x, y, start.Z ); if ( map.CanFit( p, 12, true, false ) ) Effects.SendLocationEffect( p, map, 0x376A, 4, 9 ); if ( avgX <= 0 ) { if ( x < end.X ) x += 1; else if ( x > end.X ) x -= 1; avgX = (int) Math.Round( difY != 0 ? difX / (double) difY : 0 ); } if ( avgY <= 0 ) { if ( y < end.Y ) y += 1; else if ( y > end.Y ) y -= 1; avgY = (int) Math.Round( difX != 0 ? difY / (double) difX : 0 ); } avgX -= 1; avgY -= 1; } }